在列表R中的相同数据帧列中查找最小值/最大值

时间:2015-09-02 18:27:50

标签: r dataframe min

我在名为data.frame的{​​{1}}中有323 list个。在每个mrns中,都有一个名为data.frame的变量。我需要做的是在所有323 raw.Systolic中找到最小/最大raw.Systolic。我可以为每个data.frame输出最小值,但这不是我需要的。

我到目前为止最接近的是输出每个文件的最小值列表,并试图找到找到该输出的最小值的方法,但我不知道如何。

这是我到目前为止所做的:

data.frame

哪个输出:

for (i in 1:323) {
  print(min(mrns[[i]]$raw.Systolic, na.rm=TRUE))
}

当我这样做时:

[1] 86
[1] 109
[1] 114
[1] 104
[1] 115
...etc until 323 maximums are listed

我明白了:

for (i in 1:323) {
  mins <- min(mrns[[i]]$raw.Systolic, na.rm=TRUE)
}

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

尝试,

min(unlist(lapply(mrns, function(x) min(x$raw.Systolic, na.rm=T))))

答案 1 :(得分:1)

我们可以这样做:

#minima:
do.call("min",sapply(mrns,getElement,name="raw.Systolic"))

#ranges
do.call("range",sapply(mrns,getElement,name="raw.Systolic"))

#NA-proof
do.call("min",c(sapply(mrns,getElement,name="raw.Systolic"),na.rm=T))

请注意,getElement只是函数形式的提取运算符$,即x$ygetElement(object=x,name="y")相同。

如果您知道mrns的所有元素都有相同的行数,请改用min(sapply(...))

由于sapply可能会返回list,因为mrns的每个元素可能有不同的行数,我们使用do.call允许我们传递list {1}}至minrange