![](/img/trans.png)
[英]Error while running randomForest in R: "Error in y - ymean : non-numeric argument to binary operator"
[英]non-numeric argument error while running FFT on a matrix
我讀取了一個csv文件的每一行,並將每一行的第一個元素保存在列表中,然后我想在此列表上運行FFT,但出現此錯誤:
Error in fft(x) : non-numeric argument
在示例示例中,我讀取了4行:
con<-file("C:\\bla\\test.csv","r")
datalist<-list()
m<-list()
for(i in 1:4)
{
line<-readLines(con,n=1,warn=FALSE)
m<-list(as.integer(unlist(strsplit(line,split=","))))
datalist<-c(datalist,sapply(m,"[[",1))
}
datalist
close(con)
fftfun<- function(x) {fft(x)}
fft_amplitude <- function(x) {sqrt((Re(fft(x)))^2+(Im(fft(x)))^2)} }
apply(as.matrix(datalist),2,FUN=fftfun)
我該怎么做才能解決這個問題?
編輯我在csv文件中的行:
12,85,365,145,23
13,84,364,144,21
14,86,366,143,24
15,83,363,146,22
16,85,365,145,23
17,80,361,142,21
您的代碼似乎過於復雜。 你為什么不做這樣的事情:
df <- read.csv("test.csv", header=FALSE)
x <- df[,1]
fft(x)
或者,如果您確實想逐行閱讀:
con <- file("test.csv","r")
data <- NULL
for (i in 1:4) {
line<-readLines(con,n=1,warn=FALSE)
data <- c(data, as.numeric(strsplit(line,split=",")[[1]][1]))
}
close(con)
fft(data)
讓我們假設您真正的問題是:什么使表觀數字數據變成非數字? 我不建議您遍歷代碼中數量眾多的類型強制(將csv轉換為矩陣以將其列表另存為as.matrix),而是建議您僅將一個文件簡單地讀入R
並檢查typeof
和class
每列。 如果結果是一個factor
而不是numeric
factor
,則可能需要添加參數colClasses ='character'。 如果讀取的數據是數字數據,那么您將在以后的轉換中對其進行處理。 嘗試盡可能簡化代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.