我想计算一个目录中所有csv的列的平均值,但是当我运行该函数时,它会给我错误
“数字(nc)错误:无效'长度'参数”。
我认为CSV文件有n / a值,但不应影响计算列数?
pollutantmean <- function(directory, pollutant, id =1:332, removeNA = TRUE){
nc <- ncol(pollutant)
means <- numeric(nc)
for(i in 1:nc){
means[i] <- mean(pollutant[, i], na.rm = removeNA)
}
means
}
所以这是我的更新版本。我将R设置为使用“lapply”将所有.csv读入一个文件。所有这些csv文件都具有从001到1xxx等的一致名称。所以我将id设置为001到任何时候。
files <- list.files(pattern = ".csv")
directory <- lapply(files, read.csv)
pollutantmean <- function(directory, pollutant, id =1:332, removeNA = TRUE){
nc <- ncol(pollutant)
means <- numeric(nc, na.rm=removeNA)
for(i in 1:nc){
means[i] <- mean(pollutant[, i], na.rm = removeNA)
}
means
}
我试图用一个文件中的所有csv计算整个目录中污染物的平均值。我打算使用“na.rm = removeNA”删除所有缺失的值。但它给出了数字错误(nc,na.rm = removeNA)错误:未使用的参数(na.rm = removeNA)
答案 0 :(得分:1)
pollutantmean <- function(directory, pollutant, id = 1:332) {
files_list <- list.files(directory, full.names = TRUE) #creats list of files and the csv files are sitting in the directory
dat <- data.frame() #creates empty data frame
for(i in id){
dat<- rbind(dat,read.csv(files_list[i])) #combin all the csv data together
}
good <- complete.cases(dat) #remove all the NA values from csv data set
mean(dat[good, pollutant], na.rm = TRUE) # finally calculate mean
}
这是我的回答