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

私がやりたいことは、 の 2 つの値$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 に答える