簡體   English   中英

二進制運算符CSV的非數字參數

[英]Non-numeric argument to binary operator, CSV

我曾經見過其他人已經為此苦苦掙扎,但是我沒有設法用這些帖子解決我的問題。 我收到錯誤“二進制運算符的非數字參數”。 以下可重現的示例有效:

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

為什么值不是數字? 我不明白 謝謝你的幫助!

我對帖子進行了一些重寫,因此x變量未用於輸入和輸出。 read.csv()值現在為y 注意它是一個data.frame ,而x是一個普通的numeric矢量

要使第二組圖的行為類似於第一組圖,請從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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM