cor.test 的奇怪问题——去掉结果中的 [[1]]、[[2]] 等

Weird Issue with cor.test -- get rid of [[1]], [[2]], etc. in Results

我编写了以下函数,用于在一个变量与给定变量列表之间进行成对相关。

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 总是 return 是 list)。我们可以 rbind list 元素到单个数据集 do.call

out1 <- do.call(rbind, out)

哪里

out <- myCortest(chol, "wt", c("age", "chol", "tg", "ht"))

更好的选择是将函数 'myCortest' 更改为 return rbinded 输出

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)
}