二进制运算符的非数字参数,CSV

时间:2018-03-15 15:48:11

标签: r binary operators

我已经看到其他人之前已经在努力解决这个问题,但是我没有设法用这些帖子来解决我的问题。我得到错误'二进制运算符的非数字参数'。以下可重现的示例有效:

x=rnorm(1000)+sin(c(1:1000)/100)#random data+ sinus superimposed
par(mfrow=c(2,2))

plot(x)# plot random data
plot(filter(x,rep(1/100,100)))
plot(x-filter(x,rep(1/100,100)))

# variances of variable, long term variability and short term variability
var(x)
var(filter(x, rep(1/100,100)),na.rm=T)
var(x-filter(x, rep(1/100,100)),na.rm=T)

但是,我当然想要使用我自己的数据集,它是一个csv,这就是错误发生的时候。它必须与数据格式有关,因为当我将随机数据导出到csv:

x=rnorm(1000)+sin(c(1:1000)/100)#random data+ sinus superimposed
write.csv(x,"dat.csv")

然后尝试读入dat.csv

y <- read.csv("dat.csv", header=TRUE, stringsAsFactors=FALSE)

par(mfrow=c(2,2))
plot(y)
plot(filter(y,rep(1/100,100)))
plot(y-filter(y,rep(1/100,100)))

[...]我收到了错误

Error in x - filter(x, rep(1/100, 100)) : 
  non-numeric argument to binary operator
Calls: plot
In addition: Warning message:
In plot(x - filter(x, rep(1/100, 100))) :
  Incompatible methods ("Ops.data.frame", "Ops.ts") for "-"
Execution halted

为什么值不是数字?我不明白。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我稍微重写了帖子,因此x变量没有被重复用于输入&amp;输出。 read.csv()的值现在为y。请注意它是Kylo FAQs,而x是普通的data.frame

要使第二组图形的行为与第一组相同,请从y(下面称为y1)中提取第一个向量,然后将该向量传递给dplyr函数。

y <- read.csv("dat.csv", header=TRUE, stringsAsFactors=FALSE)
y1 <- y$x # Extract the first column
par(mfrow=c(2,2))
plot(y1)
plot(filter(y1,rep(1/100,100)))
plot(y1-filter(y1,rep(1/100,100)))