R使用diff:二进制运算符错误的非数字参数

时间:2014-08-25 02:35:18

标签: r types

我们使用以下命令解析带有一些数字的CSV文件:

tt <- read.table("test2.csv",sep=";",stringsAsFactors=FALSE)

它有效。打印tt[1,]会生成一个很好的向量,而sd(tt[1,])是合理的。

然而,当我们尝试

diff(tt[1,])

命令行返回错误:

Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] :
    non-numeric argument to binary operator error

为什么?有什么想法吗?

3 个答案:

答案 0 :(得分:8)

我认为在你的tt[1,]那个

class(tt[1,])
# [1] "data.frame"

所以如果你使用as.numeric,你应该没问题。试试这个:

diff(as.numeric(tt[1,]))

以下是我们可以检查的示例:

tt <- data.frame(x = 1, y = 2)
is.vector(tt[1,])
# [1] FALSE
class(tt[1,])
# [1] "data.frame"
diff(tt[1,])
# Error in r[i1] - r[-length(r):-(length(r) - lag + 1L)] : 
#   non-numeric argument to binary operator
as.numeric(tt[1,])
# [1] 1 2
diff(as.numeric(tt[1,]))
# [1] 1

答案 1 :(得分:0)

这也有效:

BufferedSteam

答案 2 :(得分:0)

我不认为此问题与类数据框(df)有关。问题是您试图在可能的多列df上运行diff()。根据文档,diff所需的参数是向量或矩阵。我建议尝试一下:

TS_tt <- ts(tt$col, start= (the date you would like to start the time series)

然后运行:

adjusted_tt <- diff(tt, difference= 1)

希望这会有所帮助。