在一个列表R中的许多csv文件中插入列的内容

时间:2018-12-09 13:21:42

标签: r

我想从不同的csv文件中读取定义为函数输入的列的内容,我使用以下函数

Getmean <- function(directory,pollutant,id=1:332)
{
  i<- 1
  filenames <- sprintf("%0.3d", id)

  Data <- list()

  for (filename in filenames) 
  {


    Data[i]  <- read.csv(file= filename, sep=",", colClasses=c(pollutant))

     i <- i++

  }

  result <- mean(Data ,na.rm = TRUE)
}

错误:出现意外的'}': “
  }“

  

结果<-均值(Data,na.rm = TRUE)   均值错误(Data,na.rm = TRUE):找不到对象'Data'   }   错误:“}”中意外的“}”

任何解决方法,这是我在R中的第一步

2 个答案:

答案 0 :(得分:2)

是否可以使用data.table::fread

首先,使用list.files()

获取要读取的文件列表
fileslist <- list.files( 
  path = "./", 
  pattern = "(^[0-3]\\d\\d|^4[0-3]\\d|^44[0-4]).csv$",  # regex to select 000.csv to 444.csv
  full.names = TRUE )

然后使用fread读取列表,仅保留“污染物”列,使用函数的select参数。

library( data.table )
contents <- lapply( fileslist, fread, select = c( "pollutant" ) )

然后在此列表上执行所需的均值运算...

sapply( contents, mean, na.rm = TRUE )

答案 1 :(得分:1)

R在使用时没有操作数++,因此它正在等待第二个参数,该参数需要跟随+。替换为i=i+1