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