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

Joa*_*him 6 types r

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

tt <- read.table("test2.csv",sep=";",stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

它有效.打印tt[1,]产生一个很好的矢量,sd(tt[1,])是明智的.

但是,当我们尝试

diff(tt[1,])
Run Code Online (Sandbox Code Playgroud)

命令行返回错误:

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

这是为什么?有任何想法吗?

Ric*_*ven 8

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

class(tt[1,])
# [1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

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

diff(as.numeric(tt[1,]))
Run Code Online (Sandbox Code Playgroud)

这是我们可以检查的一个例子:

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
Run Code Online (Sandbox Code Playgroud)