1

これはおそらく初心者の質問です:

私は配列を持っています(それを aと呼びましょう)各要素は次のようになります:

structure(list(rs6838241 = structure(list(Results = structure(c(-0.02015,
0.022242, -0.0111580707, 0.0028333, 0.01067,-2.01730, NA, 0.1704, 0.133291277489982,
0.6855, 0.32983, 0.4598227, 6.764345237e-05, 0.31353), .Dim = c(7L, 2L), 
.Dimnames = list(c("FVCpp_utah", "FEV1pp_utah",
"WallAreaPct_seg","Vida_15perc_Exp","pctEmph_Slicer", 
"FEV1_FVC_utah", "JointModel"), c("beta","pvalue"))), 
nobs = 1112L), .Names = c("Results", "nobs"))), .Names = "rs6838241")

p値が最も小さい要素を見つけたいと思います。

私はこのようなことをしました:

m <- 1000
for (i in 1:1000){
  m <- min(m, (a[i]$'Results')['JointModel','pvalue'])
}

しかし、それは何もしません!! なぜこれができないのか混乱しています:

> (a[1])$'Results'
  NULL

これが機能している間?

> a$'rs13125929'$'Results'
[SNIPPED]

なぜこれが機能しないのですか?

> s<-'rs13125929'
> (a[s])$'Results'
NULL

ループせずに最小のp値を見つける方法はありますか?

ありがとう、

4

2 に答える 2

1

これを使用できます:

min(sapply(a, function(x) x$Results['JointModel','pvalue']))

pvalue が最小のリスト要素のインデックスを見つけるには、which.min代わりに を使用しminます。

于 2013-07-29T20:10:02.037 に答える
0
  1. Reduceループ for の代わりに使用します (こちらminも参照)
  2. 使用a[[1]]$'Results'(二重中括弧に注意)
于 2013-07-29T19:47:00.370 に答える