combn
, sapply
및 rowSums
을 사용하는 기본 R 방법입니다. 여기
# get the pairwise combination of variables
varComb <- combn(names(df), 2)
varComb
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "V1" "V1" "V1" "V2" "V2" "V3"
[2,] "V2" "V3" "V4" "V3" "V4" "V4"
# get the counts
counts <- sapply(seq_len(ncol(varComb)),
function(i) sum(rowSums(df[,varComb[,i]] > 0) == 2))
는 변수의 조합 값이 로우가 함께 sumed 것으로 간주되는 0 이상인지 여부에 기초하여 논리 행렬로 변환하는 데이터 프레임을 서브 세트하기 위해 사용된다 (
sum
를 사용)를 계산할 수 있습니다.
sapply
을 사용하면 varComb에있는 모든 변수 쌍에이 계산을 적용 할 수 있습니다.
# put these into a data frame
setNames(data.frame(t(varComb), counts), c("var1", "var2", "counts"))
var1 var2 counts
1 V1 V2 2
2 V1 V3 1
3 V1 V4 2
4 V2 V3 0
5 V2 V4 2
6 V3 V4 1
, 우리는 우리가 데이터 프레임을 생성하고 한 줄의 변수에 이름을 적용 할 수있는 setNames
을 사용할 수 있습니다 함께 이러한 결과를 퍼팅.
행렬에이 결과를 넣어, 당신은 cbind
및 매트릭스 부분 집합 사용할 수 있습니다
# construct empty matrix
tempMat <- matrix(NA, 4, 4)
# fill it in
tempMat[cbind(as.integer(substr(dfNew$var2, 2, 2)),
as.integer(substr(dfNew$var1, 2, 2)))] <- dfNew$counts
tempMat
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 2 NA NA NA
[3,] 1 0 NA NA
[4,] 2 2 1 NA
as.integer
및 substr
은 행과 값을 배치 할 열을 추출을 cbind
이 출력으로 변환 행렬 서브 세트에 사용되는 행렬 주변 하구의 조금 후 좋아
깔끔한 생각이지만 출력을 매트릭스로 가져 오는 방법이 있습니까? – Zwentibold