这似乎是一个基本问题,但我找不到适用于我的解决方案。我有一个矩阵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
这里有什么问题?
答案 0 :(得分:1)
您可以通过cbind将其添加到现有矩阵中。 所以你只需要解决其他两个列之间的差异
results.m = cbind(results.m, c(0,diff(results.m[,1])))
之后,如果您愿意,可以为该列指定一个合适的名称。
colnames(results.m)[3] <- "diff"