繁体   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