当我将此代码直接输入R控制台时,它可以完美地工作。
for(i in files) df<-rbind(df,read.csv(paste(directory,i,sep="/")))
如果我将上面的代码嵌套在下面的函数中,它会抛出一个
意外输入错误
pollutantmean <- function(directory, pollutant, id){
files <- list.files(directory)
df <- data.frame()
newdf <- data.frame()
for(i in files){
df <-rbind(df,read.csv(paste(directory,i,sep="/")))
}
for(j in id){
newdf <- rbind(df[which(df$ID==j),])
}
return(mean(na.omit(newdf[,pollutant])))
}
答案 0 :(得分:0)
stackoverflow上的另一篇文章表明它是由复制粘贴和换行符不匹配引起的
Error only when running whole block of code
但是,我想知道这是否是由错误的文件路径引起的。也许你传递的目录变量已经结束了“/”?
答案 1 :(得分:0)
如果你说得对,我认为你的功能还可以。这对我有用:
directory <- "~/Documents/temp/csv/"
pollutantmean <- function(directory, pollutant, id) {
files <- list.files(directory)
df <- data.frame()
newdf <- data.frame()
for(i in files) {
df <-rbind(df,read.csv(paste(directory,i,sep="/")))
}
for(j in id){
newdf <- rbind(df[which(df$ID==j),])
}
return(mean(na.omit(newdf[,pollutant])))
}
pollutantmean(directory, 'val', c('x'))
[1] 2.5
对于看起来像这样的数据:
ID,val
x,1
y,2
z,3
和此:
ID,val
x,4
w,2