假设我有一个数据帧:
x <- data.frame(a=c(1,2,3), b=c(2,3,2), c=c(4,5,1))
# a b c
#1 1 2 4
#2 2 3 5
#3 3 2 1
Run Code Online (Sandbox Code Playgroud)
对于每一列,我想计算它与其他列的最大值之间的差异:
# Desired result:
# a b c
#1 -3 -2 2
#2 -3 -2 2
#3 1 -1 -2
Run Code Online (Sandbox Code Playgroud)
例如,对于(1,1)条目,它是1,因为对于第一行a = 1,和max(b,c) = 4,所以1 - 4 = -3.
请注意,我不一定知道前面数据框中的列数,因此可能会有任意多列.
这应该适用于任意数量的列:
sapply(1:ncol(x), function (i) {
x[,i] - do.call(pmax, x[,-i])
})
Run Code Online (Sandbox Code Playgroud)