R:查找数据框中列列表的最大/最小值

R:查找数据框中列列表的最大/最小值,r,R,假设我有一个列名称列表作为向量: vec=c("C1" , "C2" ,"C3"). 我知道这些列名来自数据帧df: df: C1 C2 C3 C4 C5 1 2 3 4 5 1 4 3 5 6 3 2 4 1 3 我如何找到vec中每列的最大值,查看它们在df中的值。例如,类似于: boostedMax(vec, df, na.rm=T) 显然,这不起作用,但其思想是boostedMax获取列名称向量和列所在的数据帧,并从这些列返回最大值。在本例中,它将返

假设我有一个列名称列表作为向量:

vec=c("C1" , "C2" ,"C3").
我知道这些列名来自数据帧df:

df:

C1 C2 C3 C4 C5
1   2  3  4  5
1   4  3  5  6
3   2  4  1  3
我如何找到vec中每列的最大值,查看它们在df中的值。例如,类似于:

boostedMax(vec, df, na.rm=T)
显然,这不起作用,但其思想是boostedMax获取列名称向量和列所在的数据帧,并从这些列返回最大值。在本例中,它将返回向量:

(3,4,4)
提前谢谢

df
dat-dat
df <- data.frame(a = c(1:4, NA), b = 6:10, c = 11:15)
d <- colnames(df)[1:2]
sapply(df[d], max, na.rm = TRUE)
a、b、c 1 1 2 3 2 2 3 4 3 3 4 5 >sapply(数据、最大值、na.rm=TRUE) a、b、c 3 4 5


如果您认为某些级别的
vec
可能不在
df
中,您可以在%vec中执行
df[,colnames(df)%
而不是
df[,vec]

将数据集子集转换为
矩阵后,我们可以使用
colMaxs
来自
矩阵状态的

library(matrixStats)
colMaxs(as.matrix(df[vec]))
#[1] 3 4 4

或者另一个选项是
dplyr

library(dplyr)
df %>%
    summarise_each_(funs(max), vec)
#  C1 C2 C3
#1  3  4  4

编辑以提供示例数据帧。
sapply(df[vec],max,na.rm=T)
提供示例数据时,最好将其复制/粘贴。您可以通过包含代码来创建数据帧,或者发布
dput(df)
apply
sapply
更糟糕(Gregor的评论),因为它可能破坏排序,例如,如果您有混合的char和num列。嗯,结果证明我是错的。我原以为
apply
会把事情搞砸,但不知何故它不会:
DF=data.frame(a=c(2.2,11,1),b=c(“a”,“b”,“c”);应用(DF,2,max)
@RajRaina很高兴听到这个消息。如果您认为某些级别的
vec
可能不在
df
中,您可以在%vec中执行
df[,colnames(df)%
C1 C2 C3 
 3  4  4
for(i in vec){
  print(max(df[,i]))
}
[1] 3
[1] 4
[1] 4
sapply(df[,vec],max)
C1 C2 C3 
 3  4  4
library(matrixStats)
colMaxs(as.matrix(df[vec]))
#[1] 3 4 4
library(dplyr)
df %>%
    summarise_each_(funs(max), vec)
#  C1 C2 C3
#1  3  4  4