R использование diff: нечисловой аргумент для ошибки двоичного оператора
мы разбираем 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
почему это? Есть идеи?
2 ответов
Я полагаю, что в вашей 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
Это также работает:
for (i1 in 1:length(dat.diff))
{
diffy <- diff(as.numeric(dat.diff[,i1]))
dat.diff[,i1] <- c(diffy, NA)
}