r - cor.test 的奇怪问题——去掉结果中的 [[1]]、[[2]] 等
问题描述
我编写了以下函数来在一个变量与给定变量列表之间进行成对相关。
myCortest <- function(dat, mainVar, varlist) {
foo <- lapply(varlist, function(x){
foo1 <- cor.test(get(mainVar, as.environment(dat)),
get(x, as.environment(dat)))
data.frame(var1 = mainVar, var2 = x,
R = foo1$estimate, p = foo1$p.value)
})
foo
}
它工作,有点。结果之间有奇怪的 [[1]], [[2]] ,如下所示:
myCortest(chol, "wt", c("age", "chol", "tg", "ht"))
[[1]]
var1 var2 R p
cor wt age 0.6660014 5.631448e-26
[[2]]
var1 var2 R p
cor wt chol 0.06076105 0.404971
[[3]]
var1 var2 R p
cor wt tg 0.294617 3.688497e-05
[[4]]
var1 var2 R p
cor wt ht 0.8558331 2.705222e-56
我似乎无法弄清楚是什么导致括号中的数字上升。我想摆脱他们。有任何想法吗?
解决方案
它是list
循环的输出lapply
(lapply
总是返回 a list
)。我们可以rbind
将list
元素添加到单个数据集do.call
out1 <- do.call(rbind, out)
在哪里
out <- myCortest(chol, "wt", c("age", "chol", "tg", "ht"))
更好的选择是更改功能“myCortest”以返回rbind
ed 输出
myCortest <- function(dat, mainVar, varlist) {
foo <- lapply(varlist, function(x){
foo1 <- cor.test(get(mainVar, as.environment(dat)),
get(x, as.environment(dat)))
data.frame(var1 = mainVar, var2 = x,
R = foo1$estimate, p = foo1$p.value)
})
do.call(rbind, foo)
}
推荐阅读
- reactjs - 动态创建 React Boostrap 导航栏时出现关键错误
- python - 如何根据 Scrapy 中第一个请求的响应构造请求列表?
- ansible - 为什么 ansible set_fact 列表结果包含很多 // //
- python - 如何在列之间执行划分并将答案存储在新的数据框中
- python - 为什么 Lebniez 系列 PI 的 Shanks 转换需要很长时间?
- riscv - 区分 rv64imafd 和 rv64imafdc isa
- ios - 在 SwiftUI 选项/最佳实践中结合数据源/持久性?
- regex - 使用正则表达式从 0 到 999 之间的数字中提取带有数字的字符串
- ios - 调整 UIImageView 的大小保持纵横比
- python - 我如何使用 Python 处理新加坡车牌的校验和