我已经看到其他人之前已经在努力解决这个问题,但是我没有设法用这些帖子来解决我的问题。我得到错误'二进制运算符的非数字参数'。以下可重现的示例有效:
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
为什么值不是数字?我不明白。谢谢你的帮助!
答案 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)))