如何列出许多x个csv文件的行数?

时间:2016-06-05 17:22:29

标签: r csv

我一直试图找到一种获取特定数量CSV的行数的方法。我可以让R输出一个文件的行数(减去NAs)。

但是当我尝试使用冒号操作符时,我不断收到错误:

Error in file(file, "rt") : invalid 'description' argument

我创建的拍卖:

complete <- function(directory,id = 1:332){
  ## 'directory is a character vector of length 1 indicating
  ## the location of the CSV files

  ## 'id' is an intiger vector indicating the monitor ID numbers
  ## to be used

  ## Return a data frame of the form:
  ## id nobs
  ## 1  117
  ## 2  1041
  ## ...
  ## where 'id' is the monitor ID and 'nobs' is the
  ## number of complete cases

  filenames <- sprintf("%03d.csv", id)
  filenames <- paste(directory, filenames, sep="/")

  file1 <- read.csv(filenames)

  n_row <- NROW(na.omit(file1))

  output <- data.frame(id,nobs=n_row)

  output
}

我尝试使用for循环来循环读取每个文件:

  for (i in id){
    filenames <- sprintf("%03d.csv", id)
    filenames <- paste(directory, filenames, sep="/")

    file1 <- read.csv(filenames)

    n_row <- NROW(na.omit(file1))

    output <- data.frame(id,nobs=n_row)  
  }
  output

仍然出现错误:

 Error in file(file, "rt") : invalid 'description' argument 

我可以从这里获得的任何提示?

由于

2 个答案:

答案 0 :(得分:1)

如果你有一个包含每个文件路径的向量filenames,那么这样的东西应该有效:

fl = sapply(filenames, function(x) {
  dat = read.csv(x)
  return(data.frame(file=x, nobs=nrow(na.omit(dat))))
}, simplify=FALSE)

do.call(rbind, fl)

答案 1 :(得分:0)

如果您的文件命名为1.csv,2.csv,3.csv。

id=1:4
df=NULL
for (i in 1:length(id)) {
  n_row<-NROW(na.omit(read.csv(paste0("C:/Users/fol/",id[i],".csv"))))  
  df=rbind(df,data.frame(id=id[i],nobs=n_row))
}