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 回答