我想不出如何很好地标题这个,我所拥有的是由这种形式的函数(特别是midPci)生成的对象向量:
$conf.int
[1] 0.4726 0.6466
attr(,"conf.level")
[1] 0.95
$conf.int
[1] 0.1181 0.2566
attr(,"conf.level")
[1] 0.95
我想要做的是将$conf.int
的两个值去掉矢量,给出上下置信区间。显然我可以通过循环来做到这一点,但我认为可能有更好的方法来做到这一点?
CIs <- structure(list(conf.int = structure(c(0.4696, 0.6501), conf.level = 0.95),
conf.int = structure(c(0.5266, 0.7081), conf.level = 0.95), conf.int = structure(c(0.4441,
0.6196), conf.level = 0.95), conf.int = structure(c(0.4181, 0.5891), conf.level = 0.95),
conf.int = structure(c(0.4726, 0.6466), conf.level = 0.95), conf.int = structure(c(0.1181,
0.2566), conf.level = 0.95), conf.int = structure(c(0, 0.000748652688017826), conf.level =
0.95)), .Names = c("conf.int", "conf.int", "conf.int", "conf.int", "conf.int", "conf.int",
"conf.int" ))
如果我不清楚我的意思,我已经这样做了:
# Calculate CIs
CIs <- mapply(midPci, k, n, conf.level=0.95)
我可以通过CIs[1]$conf.int[1]
等获得我追求的个人价值观,但我希望一次性完成整个过程。我可以这样做吗?
答案 0 :(得分:2)
这会产生一个矩阵:
do.call(rbind, CIs)
[,1] [,2]
conf.int 0.4696 0.6501000000
conf.int 0.5266 0.7081000000
conf.int 0.4441 0.6196000000
conf.int 0.4181 0.5891000000
conf.int 0.4726 0.6466000000
conf.int 0.1181 0.2566000000
conf.int 0.0000 0.0007486527
这也产生一个矩阵,虽然它是'宽版本'。应用于向量的c
函数只返回自身,您可以使用as.vector
或I
并获得相同的结果。它实际上是由simplify2array(CIs)
调用的函数sapply
:
sapply(CIs, "c")
conf.int conf.int conf.int conf.int conf.int conf.int conf.int
[1,] 0.4696 0.5266 0.4441 0.4181 0.4726 0.1181 0.0000000000
[2,] 0.6501 0.7081 0.6196 0.5891 0.6466 0.2566 0.0007486527
如果我们使用do.call(cbind, CIs)
,我们也会得到'宽版本'。