在列表 R 的同一列数据框中查找 minimum/maximum
Find minimum/maximum within same column of dataframes in a list R
我在一个名为 mrns
的 list
中有 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
传递给 min
和 range
.
我在一个名为 mrns
的 list
中有 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
传递给 min
和 range
.