R中的mean()认为na.rm是一个对象
我在Windows8.1上的RStudio0.99.896中运行Rx64 3.2.5 我正在为Coursera上的R编程课程创建一个R函数。我试图读取目录“specdata”中的所有csv文件,并取两种污染物的平均值:“硫酸盐”和“硝酸盐”。我有以下代码: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
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)
}