如何从 cor.test() 中提取 p.value 和估计值?
How to extract the p.value and estimate from cor.test()?
我在 for 循环中对数据集执行 cor.test,但我不知道如何从我的测试中提取估计和 tau 等信息。
在数据集中执行for循环之前,cor.test()函数returns如下:
cor.test(armpit$Corynebacterium.1, armpit$Staphylococcus.1, alterantive="two-sided", method="kendall", exact=FALSE, continuity=TRUE)
return result
这是我执行 for 循环的代码。现在我想从我的测试中提取 estimate 和 tau。
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
}
}
我已经查看了
的类似问题
然后我将代码更改为:
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor.test$estimate
pvalues[i]= cor.test$p-value
}
}
但是 returns:
Error in cor.test$estimate : object of type 'closure' is not subsettable
任何人都可以帮助我了解如何从 for 循环中的 cor.test() 函数中提取估计值和 tau 值吗?提前致谢。
cor.test
returns 一个列表。您可以创建一个对象来捕获此列表:
cor_test <- cor.test( as.numeric(unlist(armpit[i])), as.numeric(unlist(armpit[j])), alterantive="two-sided", method="kendall", exact=FALSE, continuity=TRUE)
然后使用 cor_test
然后使用 $
访问列表的每个元素:
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value # note the ., not the -
最初的错误非常神秘,所以您对此感到困惑是可以理解的。您写了 cor.test$estimate
,它要求 R 访问 cor.test
函数 的 estimate
组件,而不是测试结果。
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor_test <-
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value
}
}
好吧,找到了,早该看到了。如果语句为真,if (j != i)
语句需要用括号括住应该做的所有事情。使用您拥有的特定格式,R 无法正确解析它。我无法获取您的数据,所以我做了一些(这将针对随机列测试随机行)。这有效:
M <- matrix(rnorm(8*8), ncol = 8) # made up test data
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i) { # need this bracket
cor_test <- cor.test(M[i,], M[,j],
alternative="two.sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value
} # and this bracket
}
}
estimates
pvalues
编辑:将所有结果存储在数据框中的替代版本。
M <- matrix(rnorm(8*8), ncol = 8) # made up test data
ans <- data.frame(i = rep(NA, 64), j = rep(NA, 64), estimate = rep(NA, 64), pvalue = rep(NA, 64))
cnt <- 1
for (i in 1:8) {
for (j in 1:8) {
if (j != i) {
cor_test <- cor.test(M[i,], M[,j], alternative="two.sided", method="kendall", exact=FALSE, continuity=TRUE)
ans[cnt,1] <- i
ans[cnt,2] <- j
ans[cnt,3] <- cor_test$estimate
ans[cnt,4] <- cor_test$p.value
cnt <- cnt + 1
}
}
}
ans <- na.omit(ans)
我在 for 循环中对数据集执行 cor.test,但我不知道如何从我的测试中提取估计和 tau 等信息。
在数据集中执行for循环之前,cor.test()函数returns如下:
cor.test(armpit$Corynebacterium.1, armpit$Staphylococcus.1, alterantive="two-sided", method="kendall", exact=FALSE, continuity=TRUE)
return result
这是我执行 for 循环的代码。现在我想从我的测试中提取 estimate 和 tau。
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
}
}
我已经查看了
的类似问题然后我将代码更改为:
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor.test$estimate
pvalues[i]= cor.test$p-value
}
}
但是 returns:
Error in cor.test$estimate : object of type 'closure' is not subsettable
任何人都可以帮助我了解如何从 for 循环中的 cor.test() 函数中提取估计值和 tau 值吗?提前致谢。
cor.test
returns 一个列表。您可以创建一个对象来捕获此列表:
cor_test <- cor.test( as.numeric(unlist(armpit[i])), as.numeric(unlist(armpit[j])), alterantive="two-sided", method="kendall", exact=FALSE, continuity=TRUE)
然后使用 cor_test
然后使用 $
访问列表的每个元素:
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value # note the ., not the -
最初的错误非常神秘,所以您对此感到困惑是可以理解的。您写了 cor.test$estimate
,它要求 R 访问 cor.test
函数 的 estimate
组件,而不是测试结果。
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i)
cor_test <-
cor.test( as.numeric(unlist(armpit[i])),
as.numeric(unlist(armpit[j])), alterantive="two-sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value
}
}
好吧,找到了,早该看到了。如果语句为真,if (j != i)
语句需要用括号括住应该做的所有事情。使用您拥有的特定格式,R 无法正确解析它。我无法获取您的数据,所以我做了一些(这将针对随机列测试随机行)。这有效:
M <- matrix(rnorm(8*8), ncol = 8) # made up test data
estimates = numeric(50)
pvalues = numeric(50)
for (i in 1:8) {
for (j in 1:8) {
if (j != i) { # need this bracket
cor_test <- cor.test(M[i,], M[,j],
alternative="two.sided",
method="kendall", exact=FALSE, continuity=TRUE)
estimates[i] = cor_test$estimate
pvalues[i]= cor_test$p.value
} # and this bracket
}
}
estimates
pvalues
编辑:将所有结果存储在数据框中的替代版本。
M <- matrix(rnorm(8*8), ncol = 8) # made up test data
ans <- data.frame(i = rep(NA, 64), j = rep(NA, 64), estimate = rep(NA, 64), pvalue = rep(NA, 64))
cnt <- 1
for (i in 1:8) {
for (j in 1:8) {
if (j != i) {
cor_test <- cor.test(M[i,], M[,j], alternative="two.sided", method="kendall", exact=FALSE, continuity=TRUE)
ans[cnt,1] <- i
ans[cnt,2] <- j
ans[cnt,3] <- cor_test$estimate
ans[cnt,4] <- cor_test$p.value
cnt <- cnt + 1
}
}
}
ans <- na.omit(ans)