R如何计算两个矩阵行之间的差异?

R how to calculate difference between two matrix rows?

这似乎是一个基本问题,但我找不到适合我的解决方案。我有一个矩阵 results.m

> head(results.m)
Perplexity Topics
[1,] 550.8307 2
[2,] 479.3954 3
[3,] 424.5563 4
[4,] 359.7448 5
[5,] 339.7989 6
[6,] 314.3516 7

我不明白如何创建等于两行之间差异的列 diff(例如,对于第 2 行,该值为 -71.4353,而第 1 行为空)和一列 chg 等于两行之间的百分比变化(第 2 行为 13)。

> data.frame(diff(as.matrix(results.m))) 给我一个错误

Error in r[i1, , drop = FALSE] - r[-nrow(r):-(nrow(r) - lag + 1L), , drop = FALSE] :   non-numeric argument to binary operator

> tail(results.m, -1) - head(results.m, -1)也报错

 Error in tail(results.m, -1) - head(results.m, -1) :    non-numeric
 argument to binary operator

这里哪里做错了?

您可以通过 cbind 将列添加到现有矩阵。 所以你只需要 cbind 其他两列之间的差异

results.m = cbind(results.m, c(0,diff(results.m[,1])))

之后,您可以根据需要为该列指定一个合适的名称。

colnames(results.m)[3] <- "diff"