向显示振幅的数据框添加一行(正值或负值之和的最大值)

Add a row to a dataframe showing amplitude (max of the sum of the positive or the negative values)

我想将最后一行插入数据框,以显示每列正值之和或负值之和,以振幅最大的那个为准。

最后的 table 看起来像这样,最后一行 ("MaxAmplitude") 是我想要获得的结果:

  c("A", "B", "C", "Max Amplitude")  X1  X2  X3  X4  X5
1                                 A -30  10  10  -2   8
2                                 B   5  50 100 -10 -10
3                                 C -10 -30   1  -1   3
4                     Max Amplitude -40  60 111 -13  11

我的想法是采用多步骤方法,我会连续添加几行:

我的问题是我想在不向数据框添加那么多行的情况下执行此操作。 此外,我不知道如何在负值之和具有最大幅度的情况下显示负号(如果我比较绝对值,我将丢失此信息)。

有人可以解决我如何编写此代码的问题吗? 非常感谢您的帮助!

df <- cbind(c("A","B","C"),data.frame(matrix(c(-30,5,-10,
                                                       10,50,-40,
                                                       10,100,1,
                                                       -2,-10,-1,
                                                       8,-10,3
                                                       ), nrow = 3, ncol = 5)))

这是你想要的吗?此外,apply return matrix 而不是 data.frame

apply(df[,2:6],2,function(x) sum(x[which((x>0)==(sum(x)>0))]))


 X1  X2  X3  X4  X5 
-40  60 111 -13  11 

df[nrow(df)+1,]=c('Max Amplitude',c(apply(df[,2:6],2,function(x) sum(x[which((x>0)==(sum(x)>0))]))))

> df
  c("A", "B", "C")  X1  X2  X3  X4  X5
1                A -30  10  10  -2   8
2                B   5  50 100 -10 -10
3                C -10 -40   1  -1   3
4    Max Amplitude -40  60 111 -13  11