【发布时间】:2019-10-28 14:02:13
【问题描述】:
对于我正在写的一篇论文,我将一个较大的数据集分为 3 个组,因为我认为这些组中 2 个变量之间的相关强度会有所不同(他们确实如此)。我想看看将我的数据分成随机分组是否也会显着影响相关性的强度(即,我所看到的是否只是子集的影响,或者这些分组是否真的很重要)。
为此,我试图通过从现有数据集中随机抽样 150 行来生成 n 个新数据帧,然后想计算这些 n 新数据帧,将相关系数和显着性保存在新文件中。
但是,怎么做?
我可以手动完成,例如,使用 dplyr,类似
newdata <- sample_n(Random_sample_data, 150)
output <- cor.test(newdata$x, newdata$y, method="kendall")
我显然不想输入 1000 或 100000 次,并且一直在尝试使用循环和 lapply(见下文)但它们没有奏效(无疑是因为我错过了一些非常明显的东西! )。
在这里,我尝试将每一行分配给不同的组,总共 10 个组,然后通过这些组在 x 和 y 之间进行关联:
Random_sample_data<-select(Range_corrected, x, y)
cat <- sample(1:10, 1229, replace=TRUE)
Random_sample_cats<-cbind(Random_sample_data,cat)
correlation <- function(c) {
c <- cor.test(x,y, method="kendall")
return(c)
}
b<- daply(Random_sample_cats, .(cat), correlation)
错误信息:
Error in cor.test(x, y, method = "kendall") :
object 'x' not found
【问题讨论】:
-
您的循环尝试似乎与手动尝试不一致。如果您需要手动尝试 1000 次,只需将两行都包含在
for(i in 1:1E3) ...中或将cor.test结果保存在带有lapply(1:1E3, ...)的列表中,或者使用replicate更好。