R 如何计算数据帧列表中某些列之间的相关性?
我需要从标准正态分布(X0,X1,X2,…,X19)生成20个不同的样本(n=100),并计算X0和所有其他样本X2…X19之间的相关性。我知道如何对一个“完整样本”(X0…X19)执行此操作,但我应该同时对X0…X19的多个样本执行此操作。我尝试生成一个数据帧列表(每个数据帧包含一个X0…X19样本)并对其进行迭代,但由于某种原因失败了 我的数据如下所示: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)
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谢谢,这很有效!我的荣幸。记住抛出一个答案,增加答案的可见性,在将来帮助他人,并激励好的答案。:-)我很高兴你找到了解决问题的办法。但是,不应将实际答案/解决方案编辑到您的问题中。一般来说,你应该通过提问来澄清问题,但不要在问题中包含答案。你或许应该接受奥利弗的答案。