簡體   English   中英

R data.table 從列表中分配多個列 output

[英]R data.table assign multiple columns from list output

x = data.table(group=c("a", "b"), x1=c(9, 4), x2=c(2, 7), ss1=c(20, 20), ss2=c(20, 20))
x[,fisher.test(rbind(c(x1, ss1), c(x2, ss2)))[1:3], by=group]

計算每組的 fisher.test 並獲取 output 的前三個元素會為 p.value、conf.int 和估計生成三個命名列。 這很好,除了它只需要較低的置信區間,而不是 Fisher output 中第二個列表項的較高置信區間。

出於某種原因,在嘗試同時獲取上 CI 和下 CI 時,我無法重新創建此行為。

如果您取消列出此 output 它會給出所有四個值,但在單個列 V1 中。

x[,unlist(fisher.test(rbind(c(x1, ss1), c(x2, ss2)))[1:3]), by=group]

取消列出、重新列出、命名等的任何組合似乎都沒有給我所需的 output。

這對我來說是一個反復出現的問題,所以很高興得到答案!

這有點傻,但你可以使用as.list

library(data.table)
x[,as.list(unlist(fisher.test(rbind(c(x1, ss1), c(x2, ss2)))[1:3])), by=group]
   group            p.value         conf.int1        conf.int2 estimate.odds ratio
1:     a 0.0877372116511888 0.766153560249588  46.677263221989    4.37927894874589
2:     b  0.507673628580576 0.106483621566036 2.70725328753808   0.577676599291802

暫無
暫無

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

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