R中的mean()认为na.rm是一个对象

R中的mean()认为na.rm是一个对象,r,R,我在Windows8.1上的RStudio0.99.896中运行Rx64 3.2.5 我正在为Coursera上的R编程课程创建一个R函数。我试图读取目录“specdata”中的所有csv文件,并取两种污染物的平均值:“硫酸盐”和“硝酸盐”。我有以下代码: pollutantmean <- function(directory, pollutant, id=1:332) { monitors <- list.files(directory, pattern=".csv") mon

我在Windows8.1上的RStudio0.99.896中运行Rx64 3.2.5

我正在为Coursera上的R编程课程创建一个R函数。我试图读取目录“specdata”中的所有csv文件,并取两种污染物的平均值:“硫酸盐”和“硝酸盐”。我有以下代码:

pollutantmean <- function(directory, pollutant, id=1:332) {
 monitors <- list.files(directory, pattern=".csv")
 monitorset <- as.vector(monitors[id])
      lapply(monitorset, function(x){
      t<- read.csv(x, header=TRUE)
      poll <- t[[pollutant]]
      mean(poll, na.rm)

 })     
}
我收到以下错误消息:

 Error in mean.default(poll, na.rm) : object 'na.rm' not found 
我不明白为什么均值函数认为na.rm是一个对象,而它应该是一个选项

我已经试着在控制台中运行了代码的各行,据我所知,其他行都可以正常工作。我还用谷歌搜索了错误并检查了mean()帮助条目,但没有找到一个好的解释

谢谢

变化:

mean(poll, na.rm)
致:

或者,修改函数以支持
na.rm
,将其作为函数参数,如下所示:

# Adds the na.rm parameter to the function
pollutantmean <- function(directory, pollutant, id=1:332, na.rm = TRUE) {
 monitors <- list.files(directory, pattern=".csv")
 monitorset <- as.vector(monitors[id])

 # Write an inline function w/ na.rm parameter.
 mread = function(x, na.rm = TRUE){
      t<- read.csv(x, header=TRUE)
      poll <- t[[pollutant]]
      mean(poll, na.rm = na.rm)
 }

 # Calculate and return result w/ function
 lapply(monitorset,FUN = mread, na.rm = na.rm)     
}
#将na.rm参数添加到函数中
污染物平均值变化:

mean(poll, na.rm)
致:

或者,修改函数以支持
na.rm
,将其作为函数参数,如下所示:

# Adds the na.rm parameter to the function
pollutantmean <- function(directory, pollutant, id=1:332, na.rm = TRUE) {
 monitors <- list.files(directory, pattern=".csv")
 monitorset <- as.vector(monitors[id])

 # Write an inline function w/ na.rm parameter.
 mread = function(x, na.rm = TRUE){
      t<- read.csv(x, header=TRUE)
      poll <- t[[pollutant]]
      mean(poll, na.rm = na.rm)
 }

 # Calculate and return result w/ function
 lapply(monitorset,FUN = mread, na.rm = na.rm)     
}
#将na.rm参数添加到函数中

pollutantmean您没有给参数赋值,只给了它的名称,没有等号。您应该使用
mean(poll,na.rm=TRUE)
您没有给参数赋值,只给了它的名称,没有等号。您应该使用
mean(poll,na.rm=TRUE)
# Adds the na.rm parameter to the function
pollutantmean <- function(directory, pollutant, id=1:332, na.rm = TRUE) {
 monitors <- list.files(directory, pattern=".csv")
 monitorset <- as.vector(monitors[id])

 # Write an inline function w/ na.rm parameter.
 mread = function(x, na.rm = TRUE){
      t<- read.csv(x, header=TRUE)
      poll <- t[[pollutant]]
      mean(poll, na.rm = na.rm)
 }

 # Calculate and return result w/ function
 lapply(monitorset,FUN = mread, na.rm = na.rm)     
}