0

我想不出如何给这个命名,我所拥有的是由这种形式的函数(特别是 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]等来获得我所追求的个人价值观,但我想一口气把所有的东西都拿出来。我可以这样做吗?

4

1 回答 1

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.vectororI并获得相同的结果。真正起作用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)我们也会得到“宽版本”。

于 2012-07-04T20:00:18.807 回答