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

时间:2018-03-30 18:30:24

标签: r matrix row difference

这似乎是一个基本问题,但我找不到适用于我的解决方案。我有一个矩阵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

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

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

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

之后,如果您愿意,可以为该列指定一个合适的名称。

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