我想从不同的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中的第一步
答案 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
。