我是R的初学者,我正在做一些项目,并希望得到一些帮助。在这里,我将输入 pollutantmean(,"硝酸盐",70:72),输出应包含70,71和72个文件中所有硝酸盐值的平均值。我的文件名为001.csv,002.csv ..等等。所以我使用sprintf函数来获取它 这只是一个例子。我有超过300个文件,我想将每个for循环处理的输出存储到一个向量中并取其意义并显示它。但我无法得到它的平均值。
pollutantmean <- function(dir, pollutant, id) {
dir <- getwd()
cases <- NULL
for(i in id){
csvfile <- sprintf("%03d.csv", as.numeric(i))
filepath <- file.path(paste(dir,"specdata",csvfile, sep="/"))
foo <- read.csv(filepath)
foo
if (pollutant == "sulfate") {
jar <- (foo$sulfate)
} else if (pollutant == "nitrate") {
jar <- (foo$nitrate)
}
cases[i] <- jar
}
foo1 <- mean(cases, na.rm=TRUE)
print(foo1)
}
答案 0 :(得分:0)
这个问题是关于Coursera的约翰霍普金斯大学R编程课程的作业问题。由于这是一项家庭作业,我们无法给您一个完整的答案,即显示工作代码的典型Stackoverflow.com答案。
那就是说,我会提供足够的信息让你自己修复这个功能。代码失败是因为cases[i] <- jar
尝试将单个元素(例如id == 70)或cases[70]
设置为具有多个元素的向量jar
。
考虑到编写代码的方式,请考虑使用组合函数c()
将cases
向量与jar
向量组合而不是cases[i] <- jar
。