从修正的cor.test中返回p值和相关系数

时间:2014-04-23 15:25:42

标签: r

我正在尝试运行cor.test的修改版本,使用我在stackoverflow上的另一个方便的线程上找到的以下代码:

cor_withN <- function(...) {
  res <- try(cor.test(...)$estimate, silent=TRUE)
  ifelse(class(res)=="try-error", NA, res)
}

我正在使用running()命令执行一系列包含一些NA的移动窗口关联。我想至少返回相关系数和p值(但如果我能得到测试统计量和df,那就太棒了。)

我已经尝试删除$ estimate部分,希望它会返回我上面提到的所有内容,但是我得到了一个非常丑陋,不完整的输出。

代码(没有running()命令):

cor_withN2 <- function(...) { 
    res <- try(cor.test(...), silent=TRUE) 
    ifelse(class(res)=="try-error", NA, res) 
}
cor_withN2(x, y)
[[1]]
   t 
1.948752 

我很感激有关如何修改这些内容的建议,以便返回我正在寻找的所有统计数据,或者获得实现此结果的其他方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

欢迎来到SO!

我认为你的问题是ifelse()是为条件表达式的向量以及替代值而设计的,而后者是自动地,不成熟地回收/截断以符合条件的长度(在你的情况下) ,可能缩短为一,所以只返回t值)。

考虑从

行重新描述函数中的最后一个语句
if (class(res)=="try-error") NA else unclass(res)[c("estimate","p.value")]

...(或尝试提供样本数据附带的可执行示例)。