R的行最大值

use*_*622 26 r max

我有一个数据框如下.我想为每一行获得一列最大值.但是如果该列存在于该行中,则该列应忽略值9.我怎样才能有效地实现这一目标?

df <- data.frame(age=c(5,6,9), marks=c(1,2,7), story=c(2,9,1))
df$max <- apply(df, 1, max)    
df
Run Code Online (Sandbox Code Playgroud)

tal*_*lat 20

这是一种可能性:

df$colMax <- apply(df, 1, function(x) max(x[x != 9]))
Run Code Online (Sandbox Code Playgroud)


MrF*_*ick 16

这个pmax功能在这里很有用.唯一的问题是它需要一堆向量作为参数.您可以将data.frame转换为参数do.call.我也按照其他人的建议将9个值设置为NA,但是使用了一些非传统的is.na<-命令.

do.call(pmax, c(`is.na<-`(df, df==9), na.rm=T))
# [1] 5 6 7
Run Code Online (Sandbox Code Playgroud)