如何从data.frame中的cor.test()中提取p.value和估计?

Dar*_* PC 1 for-loop r

在这个例子中,我有50个不同站点的温度值,我想将Site1与所有50个站点相关联.但我想只将data.frame中函数cor.test()生成的组件"p.value""estimate"提取到两个不同的列中.

我做了我的尝试并且它有效,但我不知道怎么做!出于这个原因,我想知道如何简化我的代码,因为问题是我必须运行两次循环"for"以获得我的结果.

这是我的例子:

# Temperature data
 data <- matrix(rnorm(500, 10:30, sd=5), nrow = 100, ncol = 50, byrow = TRUE,
               dimnames = list(c(paste("Year", 1:100)),
                               c(paste("Site", 1:50))) )
# Empty data.frame
 df <- data.frame(label=paste("Site", 1:50), Estimate="", P.value="")

# Extraction
for (i in 1:50) {
 df1 <- cor.test(data[,1], data[,i] )
 df[,2:3] <- df1[c("estimate", "p.value")]
   }

for (i in 1:50) {
  df1 <- cor.test(data[,1], data[,i] )
 df[i,2:3] <- df1[c("estimate", "p.value")]
   }

 df
Run Code Online (Sandbox Code Playgroud)

我非常感谢你的帮助:)

col*_*d77 5

我也可能提供以下内容(屏蔽循环):

result <- do.call(rbind,lapply(2:50, function(x) {
  cor.result<-cor.test(data[,1],data[,x])
  pvalue <- cor.result$p.value
  estimate <- cor.result$estimate
  return(data.frame(pvalue = pvalue, estimate = estimate))
})
)
Run Code Online (Sandbox Code Playgroud)