在所有可能的组合之间进行成对比较

时间:2016-06-14 16:58:49

标签: r

我有一个矩阵,我想在所有可能的组合之间进行成对比较(唯一):

data.frame

        A      B     C     D
 a      2      0     2     50
 b      1      3     1     2
 c      4      6     7     50
 d      1      3     8     2
...   ...     ...   ...   ...


library(utils)
combined <- combn(samples,2,simplify = FALSE)

combined
[[1]]
[1] "A" "B"

[[2]]
[1] "A" "C"
...

par(mfrow=c(2,2))
for(i in 1:length(combined)){
  cor <- sprintf(cor(dat$combined[[i]][1],dat$combined[[i]] [2]),fmt='%#.2g',method="spearman")
  smoothScatter (
        dat$combined[[i]][1],
        dat$combined[[i]][2],
        main=paste0("Spearman= ",cor),
      )
 }
dev.off()

但是我收到以下错误:

Error in cor(dat$combined[[i]][1], dat$combined[[i]][2]) : 
  supply both 'x' and 'y' or a matrix-like 'x'

1 个答案:

答案 0 :(得分:0)

我刚刚做了几乎完全相同的事情,除了余弦相似性或相关性:

set.seed(255)
mydata<-data.frame(matrix(rnorm(400), nrow = 20))
## 20x20 matrix

choices<-choose(20,2) #20 choose 2 possible pairs
combs<-combn(20,2) # create those pairs

COR<-NULL
A<-NULL
B<-NULL

  for(i in 1:choices) {
    nums<-combs[,i]
    COR[i]<-cor(mydata[,nums[1]], mydata[,nums[2]])
    A[i]<-nums[1]
    B[i]<-nums[2]
  }

COR.data<-data.frame(A,B,COR) #create a data.frame with the results
head(COR.data, 5)

A B       COR
1 2  0.246464
1 3  0.209621
1 4 -0.273593
1 5  0.380731
1 6  0.008158

在生成的data.frame列中,A和B是已比较的mydata对象的列。