繼具有超過10行的CSV文件的功能是,我已經在目錄中應用移動平均預測到所有的.csv
文件編寫的代碼。申請中的R
fileNames <- Sys.glob("*.csv")
for (fileName in fileNames) {
abc <- read.csv(fileName, header = TRUE, sep = ",")
nrows <- sapply(fileNames, function(f) nrow(read.csv(f)))
if (nrows>=as.vector(10)) {
library(stats)
library(graphics)
library(forecast)
library(TTR)
library(zoo)
library(tseries)
abc1 = abc[,1]
abc1 = t(t(abc1))
abc1 = as.vector(abc1)
abc2 = ts(abc1, frequency = 12,start = c(2014,1))
abc_decompose = decompose(abc2)
plot(abc_decompose)
forecast = (abc_decompose$trend)
x <- data.frame(abc, forecast)
write.csv (x, file = fileName, row.names=FALSE, col.names=TRUE)
}
}
現在,當我排除線5條,即if(nrows>=as.vector(10))
代碼上有足夠的沒有文件工作的罰款。 (我已經拍攝了大約20個文件,所有文件都超過10行)。
但是,我在包含2或少於2個條目的目錄中有一些csv文件,所以當代碼在整個目錄上運行時,它會顯示以下錯誤消息: Error in decompose(abc2) : time series has no or less than 2 periods
。由於手動排除這些文件是很難的,我也要用類似線5
現在NROWS是給了我與他們沒有目錄下的所有文件名的列表。行的,但是當我運行整個代碼我得到148個警告消息(該目錄中有148個的CSV文件),每個人的說法: In if (nrows >= as.vector(10)) { ... : the condition has length > 1 and only the first element will be used
,我沒有得到的輸出。
所以,肯定我做錯事在該行5,請幫助。
你意識到,通過'for'循環每一次,你第一次讀「當前」文件(即'fileName'),但後來也讀_all_的文件(用'sapply')。也許你打算只檢查一下'fileName'的行數?在這種情況下,您應該刪除'sapply'行,並將'if'條件更改爲'if(nrow(abc)> = 10){'。 – jbaums