如何从r矢量的对象中获取值到向量中?

时间:2012-07-04 19:31:24

标签: r vector

我想不出如何很好地标题这个,我所拥有的是由这种形式的函数(特别是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]等获得我追求的个人价值观,但我希望一次性完成整个过程。我可以这样做吗?

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.vectorI并获得相同的结果。它实际上是由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),我们也会得到'宽版本'。