R:参数不是数字或逻辑:返回NA并且不能将列名作为参数传递

时间:2016-03-20 03:43:53

标签: r

我在下面创建的函数是从目录到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)
      }


}

有效。我想知道当我在第一个函数中传递“硝酸盐”时它无法工作的原因。

1 个答案:

答案 0 :(得分:1)

data_frame$pollutant查找名为pollutant的列。要使用变量名pollutant访问列,您需要使用data_frame[,pollutant]