以下是一个示例数据框:
df <- data.frame(t1 = c(1,2,3,4), t2 = c(7,3,8,1), t3 = c(1,1,1,1))
df
t1 t2 t3
1 1 7 1
2 2 3 1
3 3 8 1
4 4 1 1
我的目标是从每列中删除最大值。但是,对于像t3这样的列,列中的所有值都相等,我只需删除一个值,这样数据框中的所有三列最终都会有三行,如下所示:
df2
t1 t2 t3
1 1 7 1
2 2 3 1
3 3 1 1
答案 0 :(得分:4)
如果只使用which.max
,那么只选择一个值(即第一次出现的最大值的索引):
as.data.frame(lapply(df, function(x) x[-which.max(x)]))
# t1 t2 t3
# 1 1 7 1
# 2 2 3 1
# 3 3 1 1
答案 1 :(得分:4)
尝试
library(data.table)
setDT(df)[, lapply(.SD, function(x) x[-which.max(x)])]