我正在尝试运行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
我很感激有关如何修改这些内容的建议,以便返回我正在寻找的所有统计数据,或者获得实现此结果的其他方法。
谢谢!
答案 0 :(得分:0)
欢迎来到SO!
我认为你的问题是ifelse()
是为条件表达式的向量以及替代值而设计的,而后者是自动地,不成熟地回收/截断以符合条件的长度(在你的情况下) ,可能缩短为一,所以只返回t值)。
考虑从
行重新描述函数中的最后一个语句if (class(res)=="try-error") NA else unclass(res)[c("estimate","p.value")]
...(或尝试提供样本数据附带的可执行示例)。