R中具有交替第二分量的关联

R中具有交替第二分量的关联,r,loops,correlation,R,Loops,Correlation,(我认为这一点相当简单,但我不明白,因为我不太习惯在R中使用循环。) 我想运行一系列的cor(),其中函数的一个元素是同一列,但第二个元素交替到上一列。例如,cor(data$V1,data$V2)然后cor(data$V1,data$V3)等等。我不能只运行一个相关矩阵,然后使用use=“complete.obs”,因为每次比较都有不同数量的案例缺失 如何在循环中轻松完成此操作 lappy(mtcars[,-1],cor,mtcars[,1]) # [[1]] # [1] -0.852162

(我认为这一点相当简单,但我不明白,因为我不太习惯在R中使用循环。)

我想运行一系列的
cor()
,其中函数的一个元素是同一列,但第二个元素交替到上一列。例如,
cor(data$V1,data$V2)
然后
cor(data$V1,data$V3)
等等。我不能只运行一个相关矩阵,然后使用
use=“complete.obs”
,因为每次比较都有不同数量的案例缺失

如何在循环中轻松完成此操作

lappy(mtcars[,-1],cor,mtcars[,1])
# [[1]]
# [1] -0.852162
# [[2]]
# [1] -0.8475514
# [[3]]
# [1] -0.7761684
# [[4]]
# [1] 0.6811719
# [[5]]
# [1] -0.8676594
# [[6]]
# [1] 0.418684
# [[7]]
# [1] 0.6640389
# [[8]]
# [1] 0.5998324
# [[9]]
# [1] 0.4802848
# [[10]]
# [1] -0.5509251

实际上,dumb answer仍然可以生成相关矩阵,但使用
use=“pairwise.complete.obs
如果没有缺失值,您可以执行以下操作:

set.seed(100)
mat = data.frame(matrix(runif(1000),ncol=100))
colnames(mat) = paste0("V",1:100)
cor(mat[,1],mat[,2:100])
如果缺少值:

set.seed(100)
mat = matrix(runif(1000),ncol=100)
mat[sample(length(mat),100)] <- NA
mat = data.frame(matrix(runif(1000),ncol=100))
colnames(mat) = paste0("V",1:100)
cor(mat[,1],mat[,2:100],use="p")
set.seed(100)
mat=矩阵(runif(1000),ncol=100)

mat[sample(length(mat),100)]在FUN(X[[I]],…)中替换我的数据时,我得到以下错误:不兼容的维度
当你传递给它一个
矩阵
时会发生。从你的示例代码来看,它看起来像一个
数据框架
。它是哪一个?它是一个
数据框架
。我不知道。我试过它作为一个
数据框架
tbl\u df
,和
数据表
,它们都能工作。虽然我确信还有其他的对于这个错误的表现方式,最简单的方法(对我来说)是在矩阵上尝试。也许你可以在你的问题中包含来自
dput(head(data))
的输出,它将提供一个明确的数据样本。