从R中的特定目录中删除少于10个条目的csv文件

时间:2014-06-16 10:26:33

标签: r csv

我在特定目录中有大约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个条目的文件不感兴趣但是手动删除这些文件很困难。请帮忙。

1 个答案:

答案 0 :(得分:4)

您可以计算for循环

中每个csv文件的行数
nrows <- sapply( csvfile, function(f) nrow(read.csv(f)) )

如果nrows&gt; 10,那么就做你做的事 要删除这些文件,请使用unlink

unlink(x, recursive = FALSE, force = FALSE)