如何使用R将结果放入矩阵

时间:2018-11-05 18:33:12

标签: r

所以我有一个在这里编写的代码:

for (i in 2:25) { 
  print(i)
  print(cor.test(demo_data[, i], demo_data[, 1]))
}

因此,这基本上对我的单个y变量(1)运行了每个x变量(2:25),并且输出是p值和相关值。我要做的是将这些输出放入一个表,该表具有用于标签(我测试过的东西),相关性(来自cor.test的值)和p值(来自cor.test的另一个值)的列。我应该怎么做呢?感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用apply一次性运行所有测试。
由于您尚未发布数据集,因此我将组成一个数据集。

set.seed(9263)    # Make the results reproducible
n <- 1000
demo_data <- matrix(runif(n, 0, 10), ncol = 25)

cor_list <- apply(demo_data[, -1], 2, cor.test, demo_data[, 1])

就是这样。
现在,要提取所需的值,请记住类"htest"的对象(基R的许多*.test函数返回的类)不过是更改了类属性的列表。因此,标准的提取功能可以正常工作。

corval <- sapply(cor_list, '[[', "estimate")
pval <- sapply(cor_list, '[[', "p.value")
labs <- paste("cor", 2:25, 1, sep = ".")

res <- data.frame(labels = labs, cor = corval, p.value = pval)

head(res)
#   labels          cor   p.value
#1 cor.2.1  0.190852493 0.2381344
#2 cor.3.1 -0.033208075 0.8388049
#3 cor.4.1  0.236789973 0.1412597
#4 cor.5.1  0.003775437 0.9815539
#5 cor.6.1 -0.079078805 0.6276482
#6 cor.7.1  0.003072550 0.9849876

答案 1 :(得分:0)

我会这样写:

result_matrix = matrix(nrow=24, ncol=3) 

for (i in 2:25) { 
  print(i)
  cor.result <- cor.test(demo_data[, i], demo_data[, 1])
  result_matrix[i-1,] <- c(demo_data[, i], cor.result$estimate, cor.result$p.value)
}

希望有帮助。