我在特定目录中有大约100个csv文件,我想对所有文件使用移动平均预测。以下是我写的代码:
fileNames <- Sys.glob("*.csv")
for (fileName in fileNames) {
abc <- read.csv(fileName, header = TRUE, sep = ",")
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)
}
现在这段代码完美无缺。它会向每个csv文件追加一个名为forecast的列,并在其中写入预测值。问题是那些100个csv文件中有些太小而R显示以下错误:
Error in decompose(abc2) : time series has no or less than 2 periods
实际上我对少于10个条目的文件不感兴趣但是手动删除这些文件很困难。请帮忙。
答案 0 :(得分:4)
您可以计算for
循环
nrows <- sapply( csvfile, function(f) nrow(read.csv(f)) )
如果nrows&gt; 10,那么就做你做的事 要删除这些文件,请使用unlink。
unlink(x, recursive = FALSE, force = FALSE)