-2
我要计算一个目录中的所有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)
你至少可以尝试自己做一些调试。在调用ncol之前插入'print'语句。参数'na.rm'是一个逻辑,所以应该是'FALSE'的'TRUE'而不是'removeNA'。但为什么不使用内置函数colMeans? – Bhas
@Bhas。我应该仔细看看参数列表:'removeNA'是函数的一个参数! – Bhas
只要'意味着< - sapply(污染物,函数(x)平均值(x,na.rm = T))' –