[英]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.