作者:悍受蓁 | 来源:互联网 | 2022-12-06 19:15
1> akrun..:
我们可以pmax
用来查找max
每行的值
do.call(pmax, df)
并使用它来创建逻辑矩阵,并将那些不是max
每行的值替换为NA
df[df != do.call(pmax, df)[row(df)]] <- NA
或另一种选择是apply
使用MARGIN
过的行指定为1到循环并使用相同的逻辑
df[] - t(apply(df, 1, FUN = function(x) replace(x, x!= max(x), NA)))
df
# x y z
#1 NA NA 0.000824
#2 NA NA 0.533939
#3 NA 0.873416 NA
#4 NA NA 0.990648
#5 NA 0.826873 NA
#6 NA 0.926590 NA
#7 0.826368 NA NA
#8 NA NA 0.884338
#9 NA NA 0.501968
#10 NA 0.846041 NA