R 如何计算数据帧列表中某些列之间的相关性?

R 如何计算数据帧列表中某些列之间的相关性?,r,dataframe,lapply,correlation,R,Dataframe,Lapply,Correlation,我需要从标准正态分布(X0,X1,X2,…,X19)生成20个不同的样本(n=100),并计算X0和所有其他样本X2…X19之间的相关性。我知道如何对一个“完整样本”(X0…X19)执行此操作,但我应该同时对X0…X19的多个样本执行此操作。我尝试生成一个数据帧列表(每个数据帧包含一个X0…X19样本)并对其进行迭代,但由于某种原因失败了 我的数据如下所示: dataframes <- replicate(10, as.data.frame(replicate(20, rnorm(100)

我需要从标准正态分布(X0,X1,X2,…,X19)生成20个不同的样本(n=100),并计算X0和所有其他样本X2…X19之间的相关性。我知道如何对一个“完整样本”(X0…X19)执行此操作,但我应该同时对X0…X19的多个样本执行此操作。我尝试生成一个数据帧列表(每个数据帧包含一个X0…X19样本)并对其进行迭代,但由于某种原因失败了

我的数据如下所示:

dataframes <- replicate(10, as.data.frame(replicate(20, rnorm(100))))

head(dataframes)

#   [,1]        [,2]        [,3]        [,4]        [,5]        [,6]       
#V1 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V2 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V3 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V4 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V5 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V6 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#   [,7]        [,8]        [,9]        [,10]      
#V1 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V2 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V3 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V4 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V5 Numeric,100 Numeric,100 Numeric,100 Numeric,100
#V6 Numeric,100 Numeric,100 Numeric,100 Numeric,100
lapply(frames,
       function(x){
                   cor(x[,1]$V1, x[-c(1:1)])
                   return(x)
                   }
                    ) 
但这导致了一个错误:

x[,1]中的错误:尺寸数量不正确


一般来说,我对lappy或loops不是很熟悉,所以我真的需要一些帮助。

您的可复制示例是不可复制的。一个问题是您的数据不是
数据框
列表

class(dataframes) 
[1] "matrix" "array"
此外,还有一些简单的错误,如在
lappy
中返回
x
x
是此处的输入,而不是结果)和双子集
x
。纠正这些小错误可以解决您的问题

dataframes <- replicate(10, 
                        as.data.frame(replicate(20, rnorm(100)))
                        simplify = FALSE) # <=== fix
lapply(dataframes, # <=== name corrected
       function(x){
                   cor(x$V1, x[-1]) # no need to subset x before `$V1`
                   # return(x) # <== Remove return x
         }
       ) 

dataframes谢谢,这很有效!我的荣幸。记住抛出一个答案,增加答案的可见性,在将来帮助他人,并激励好的答案。:-)我很高兴你找到了解决问题的办法。但是,不应将实际答案/解决方案编辑到您的问题中。一般来说,你应该通过提问来澄清问题,但不要在问题中包含答案。你或许应该接受奥利弗的答案。