【发布时间】:2017-10-01 16:46:08
【问题描述】:
我有一个这样的数据集
set.seed(1)
a = abs(rnorm(10, mean = 0, sd= 1))
b = abs(rnorm(10, mean = 0, sd= 1))
c = abs(rnorm(10, mean = 0, sd= 1))
d = abs(rnorm(10, mean = 0, sd= 1))
df = as.data.frame(cbind(a, b, c, d))
我想要一张桌子
c d
a 0.5 0.1
b 0.8 0.3
其中 cols 和 rows 是变量和单元格 - 变量之间的相关系数。
我按照下面的方式做
for(j in df[, 1:2]) {
for(i in df[, 3:4]) {
k=abs(cor.test(j, i, method = c( "spearman"))$estimate)
cat(k, '\n')
y <- rbind(y, k)
}}
y
得到
rho
k 0.175757576
k 0.006060606
k 0.151515152
k 0.054545455
我用了这个帖子Using double loop to fill a matrix in R
mat<-matrix(list(c(NA,NA)), nrow=2, ncol=2)
for(j in df[, 1:2]) {
for(i in df[, 3:4]) {
mat[i,j][[1]]=abs(cor.test(j, i, method = c( "spearman"))$estimate)
}}
mat
我得到了
[,1] [,2]
[1,] Logical,2 Logical,2
[2,] Logical,2 Logical,2
如何填表?或者我可以在没有循环的情况下填充它吗?
- 在真实数据集中有很多变量,我不能使用像
ggpairs这样的工具
【问题讨论】:
-
在这种情况下
cor(df, method = "spearman")我们得到矩阵 4X4 但我只想要 2X2 -
cor(cbind(a,b), cbind(c,d))? -
或@d.b 的另一个版本的答案
cor(df)[1:2, 3:4]