r - lapply 和 for 循环通过 R 中的 data.frames 列表运行函数

标签 r list dataframe for-loop lapply

我有一个 data.frame 列表,我想通过每个 data.frame 运行 cor.testdata.frame 有 8 列,我想针对第 8 列的前 7 列中的每一列运行 cor.test

我首先设置存储数据的列表

estimates = list()
pvalues = list()

然后是结合lapply的循环

for (i in 1:7){
  corr <- lapply(datalist, function(x) {cor.test(x[,i], x[,8], alternative="two-sided", method="spearman", exact=FALSE, continuity=TRUE)}) 
  estimates= corr$estimate
  pvalues= corr$p.value
}

它运行没有任何错误,但estimates 显示NULL

哪一部分出了问题?我曾经在 cor.test 上运行 for 循环,或者使用 lapply 运行,从不将它们放在一起。我想知道是否有解决方案或替代方案。谢谢。

最佳答案

我们可以使用 sapply,以 mtcars 上的示例显示,其中 cor.test 是针对第一列对所有列执行的。

lst <- list(mtcars, mtcars) 

lapply(lst, function(x) t(sapply(x[-8], function(y) {
   val <- cor.test(y, x[[8]], alternative ="two.sided", 
            method="spearman", exact=FALSE, continuity=TRUE)
          c(val$estimate, pval = val$p.value)
})))

[[1]]
#            rho         pval
#mpg   0.7065968 6.176953e-06
#cyl  -0.8137890 1.520674e-08
#disp -0.7236643 2.906504e-06
#hp   -0.7515934 7.247490e-07
#drat  0.4474575 1.021422e-02
#wt   -0.5870162 4.163577e-04
#qsec  0.7915715 6.843882e-08
#am    0.1683451 3.566025e-01
#gear  0.2826617 1.168159e-01
#carb -0.6336948 9.977275e-05

#[[2]]
#            rho         pval
#mpg   0.7065968 6.176953e-06
#cyl  -0.8137890 1.520674e-08
#.....

这将返回两列矩阵的列表,其中分别包含 estimatep.value

关于r - lapply 和 for 循环通过 R 中的 data.frames 列表运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56478767/

相关文章:

list - 在 Elixir 中使用递归反转列表

javascript - CSS 仅影响嵌套列表中的父列表

python - 如何规范化包含大量不同集合的深层嵌套 JSON 结果?

python - 为什么 pandas.DataFrame.from_dict 不支持 pandas.DataFrame.to_dict 的所有方向?

在水体上移除部分光栅图像

r - 一个 sliderInput 上的多个范围

r - 使用 for 循环命名向量中的组件

r - 如何使用 R 在向量中找到第二个非连续出现的值的索引?

python - 使用 XOR 运算符确定整数列表中是否存在重复项

r - 计算两个数据帧之间的相关性是否需要循环?