我在下面创建的函数是从目录到data_frame读取332个文件。 这些文件都具有相同的列,例如“硝酸盐”。当我将参数“硝酸盐”传递给函数时,会出现如下错误
Warning message:
In mean.default(data_frame$pollutant, na.rm = TRUE) :
argument is not numeric or logical: returning NA
功能是:
pollutantmean <- function(directory,pollutant,id = 1:332) {
##set up directory
file_names <-
dir(paste("C:/Users/Bruce/Desktop",directory,sep = "/"))
## red files according to the id
data_frame <- do.call(rbind, lapply(file_names[id], read.csv))
## get the mean
mean(data_frame$pollutant, na.rm = TRUE)
}
调用Function并传递参数
pollutantmean("specdata","nitrate",1:10)
但是,当我更改功能时,如下所示:
pollutantmean <- function(directory,pollutant,id = 1:332) {
##set up directory
file_names <-
dir(paste("C:/Users/Bruce/Desktop",directory,sep = "/"))
## red files according to the id
data_frame <- do.call(rbind, lapply(file_names[id], read.csv))
data_frame
## get the mean
if(pollutant == "nitrate"){
mean(data_frame$nitrate, na.rm = TRUE)
}else if(pollutant == "sulfate"){
mean(data_frame$sulfate, na.rm = TRUE)
}
}
有效。我想知道当我在第一个函数中传递“硝酸盐”时它无法工作的原因。
答案 0 :(得分:1)
data_frame$pollutant
查找名为pollutant
的列。要使用变量名pollutant
访问列,您需要使用data_frame[,pollutant]