为R中超过10行的csv文件应用函数

为R中超过10行的csv文件应用函数,r,csv,R,Csv,以下是我编写的代码,用于将移动平均预测应用于目录中的所有.csv文件 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.vect

以下是我编写的代码,用于将移动平均预测应用于目录中的所有.csv文件

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行时,即ifnrows>=as.vector10,代码在具有足够数量的条目的文件上运行良好,我已经获取了大约20个文件,所有文件都有10行以上

但是,我在目录中有一些csv文件,其中包含2个或少于2个条目,因此当代码在整个目录上运行时,它会给出以下错误消息: 分解错误:时间序列没有或少于2个周期。由于手动排除这些文件很困难,我必须使用类似于第5行的内容

现在nrows给了我一个目录的所有文件名及其行数的列表,但是当我运行整个代码时,我得到148条警告消息,目录有148个csv文件,每个警告消息都说: 如果nrows>=as.vector10{…: 条件的长度大于1,并且只使用第一个元素,而我没有得到输出


所以,我在第5行肯定做错了。请帮忙。

更改nrows您是否意识到每次通过for循环时,您首先读取当前文件,即文件名,然后还使用sapply读取所有文件。也许您只是想检查文件名的行数?在这种情况下,您应该移动sapply线,并将if条件更改为ifnrowabc>=10{。
nrows <- nrow(abc)