我有一套CSV文件。每个CSV文件都有一个唯一的ID,还有“日期”、“硫酸盐”、“硝酸盐”等其他列。这是关于空气污染的数据。
该函数必须使用3个参数:“目录”、“污染物”、"id“。
这是原始数据格式(用于001.csv文件):
Date Sulfate Nitrate ID
2013-02-04 2.27 NA 1
2013-02-05 NA 1.15 1到目前为止,这是我的职责:
pollutantmean <- function (directory, pollutant, id = 1:332){
files_full <- list.files (directory, full.names = TRUE)
dat <- data.frame ()
for (i in id){
dat <- rbind (dat, files_full[i])
}
datasub <- dat[,pollutant]
}1)用户输入以下内容:“污染”(“规范数据”,“硝酸盐”,70:72)
他们应该得到(欲望输出):
1.706
相反,我得到了:
Error in `[.data.frame`(dat, , pollutant) : undefined columns selected
In addition: Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = "specdata/071.csv") :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "specdata/072.csv") :
invalid factor level, NA generated这些错误意味着什么?
发布于 2014-06-16 06:37:06
我发现你的代码有两个问题
我已经修改了这个函数,让你试试这个。
pollutantmean <- function (directory, pollutant, id = 1:332){
files_full <- list.files (directory, full.names = TRUE)
dat <- data.frame()
for (i in id){
dat <- rbind (dat, read.table(files_full[i],sep="",.......))
}
datasub <- dat[,"pollutant"]
}更快的方法是使用data.table包。为了在这里警告您,您只需要给子集data.table提供列名,而不是作为字符。例: dat,column_name
pollutantmean <- function (directory, pollutant, id = 1:332){
library(data.table)
files_full <- list.files (directory, full.names = TRUE)
dat_list <- list()
for (i in id){
dat_list[[i]] <- fread(files_full[i],sep="",.......)
}
dat <- rbindlist(dat_list)
return(mean(dat[,pollutant]))
}https://stackoverflow.com/questions/24236811
复制相似问题