【发布时间】:2014-07-04 19:09:58
【问题描述】:
我有以下代码来获取污染物平均值。该程序的数据位于文件夹 specdata 中,名称为 "001.csv", "002.csv", ... to "332.csv" 。任何一个数据的名称给出以下名称:
[1] "Date" "sulfate" "nitrate" "ID"
在下面的代码中,我必须计算污染物硝酸盐或硫酸盐的平均值。我认为代码是正确的。但是 data$pollutant 给了
空
污染平均值错误(“specdata”,“硫酸盐”,23):尝试 应用非函数
代码应该通过以下方式调用:
pollutantmean("specdata", "nitrate", 23)
我在这里做错了什么??
pollutantmean <- function(directory, pollutant, id = 1:332) {
f <- function(num){
if(num>=0 & num<=9){
fname <- paste('specdata/00',as.character(num),".csv",sep="")
}
else if (num>=10 & num <=99){
fname <- paste('specdata/0',as.character(num),".csv",sep="")
}
else{
fname <- paste('specdata/',as.character(num),".csv",sep="")
}
data <- read.csv(fname)
data <- data[complete.cases(data),]
return(mean(data$pollutant))
}
results <- sapply(id, f)
return(results)
}
【问题讨论】:
-
与您的问题无关,但有用的提示:运行
sprintf("%03.f", 1:322)。 -
啊,谢谢!这本可以在上面循环中救我。我正在学习 R。这是一种很好的捷径。谢谢
-
次要观点:您还硬编码
"specdata/",并且从不使用directory。