在列表 R 的同一列数据框中查找 minimum/maximum

Find minimum/maximum within same column of dataframes in a list R

我在一个名为 mrnslist 中有 323 个 data.frame。在每个 data.frame 中,都有一个名为 raw.Systolic 的变量。我需要做的是在所有 323 个 data.frame 中找到 minimum/maximum raw.Systolic。我可以输出每个 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)
}

我得到:

> mins
[1] 129

有人有什么建议吗?

试试,

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

我们可以这样做:

#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$y等同于getElement(object=x,name="y")

如果您知道 mrns 的所有元素具有相同的行数,只需使用 min(sapply(...)) 即可。

由于 sapply 可能 return 一个 list 给定 mrns 的每个元素可能有不同的行数,我们使用 do.call允许我们将 list 传递给 minrange.