簡體   English   中英

從多個cor.test()中提取估計值和P值會導致R

[英]Extracting Estimate and P-value from multiple cor.test() results in R

我有一個54頁的Excel工作簿。 每張紙代表一個國家,是一個17 x 11的矩陣,其中行是年份,列是經濟變量。

我可以使用readxl軟件包將Excel工作簿帶入R中。

sheet_list <- lapply(1:54, function(i) read_excel("FDI-vs-variables.xlsx", sheet = i, na="NA"))

現在,我的數據以數據列表sheet_list的形式存在 ,其中每個數據代表我的工作簿的一張紙。

接下來,我想對所有工作表/數據框上的兩個變量進行相關性測試。

例如,所有工作表/數據框中的第三列是GDP,第八列是營養不良的人口百分比。 我可以編寫一個函數來捕獲工作表/數據框中的相應列,並使用該數據運行相關性測試。

dfCorTest <- function(df){
  rslt <- cor.test(df[[3]],df[[8]], method="kendall",use="pairwise")
  return(rslt)
}

然后,我使用lapply將功能應用於我的54個工作表/數據列表中的每個工作表/數據

cor_results <- lapply(sheet_list, dfCorTest)

這將產生一個列表cor_results的列表, 其中詳細列出了54種不同的cor.test運行的結果。

如何僅從此列表列表中提取相關估計(tau)和p值?

我知道您可以使用$estimate$p.value p.value調用cor.test的特定結果,並且可以在cor_results列表中進行調用,如下所示:

cor_results[[1]]$estimate
cor_results[[1]]$p.value
cor_results[[2]]$estimate
cor_results[[2]]$p.value
...and so on

但是,這樣做的有效方法是什么? 理想情況下,我希望能夠寫出文本文件,其中輸出看起來像

SheetNo    Estimate    P-value
1          3.33        0.054
2          -2.76       0.889
...        ...         ...
54         1.23        0.007

我知道在如何提取...中有一個類似的問題,但它們用於循環而不是應用來運行多個相關性測試,而且我似乎無法計算出等效的代碼。

更新/編輯

下面的用戶Parfait建議的答案有效(謝謝!)。 修改函數返回的內容以及sapplytranspose的組合:

dfCorTest <- function(df){
  rslt <- cor.test(df[[3]], df[[8]], method="kendall", use="pairwise")

  return(c(estimate = rslt$estimate,
           p.value = rslt$p.value))
}

cor_results <- t(sapply(sheet_list, dfCorTest))

考慮將sapply用於相關結果的矩陣輸出(即s的隱式版本),並調整返回對象和最后的轉置t()

dfCorTest <- function(df){
  rslt <- cor.test(df[[3]], df[[8]], method="kendall", use="pairwise")

  return(c(estimate = rslt$estimate,
           p.value = rslt$p.value))
}

cor_results <- t(sapply(sheet_list, dfCorTest))

Rextester演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM