警告消息:在mean.default中(filtermyData $ sulfate,na.rm = TRUE):参数不是数字或逻辑:返回NA

时间:2015-05-14 20:49:49

标签: r

我正在编写一个函数来在一个数据框中加载几个csv文件。 然后,我根据列ID中的特定值过滤掉行。

然后,我打算从过滤后的数据框中找到硫酸盐/硝酸盐柱的平均值。但是我收到了标题中提到的错误。

我的代码是,

function(directory,pollutant,id=1:332)
{
    wd<-getwd()
    if(wd %in% "C:/Users/Hp/Documents/specdata")
    {}
    else
    {
        setwd(directory)
    }
    temp<-list.files(pattern="*.csv")
    myData<- lapply(temp,read.csv)
    filtermyData<-subset(myData,myData$ID %in% id)
    if(pollutant %in% "sulfate")
    {
        meanSulfate<-mean(filtermyData$sulfate,na.rm=TRUE)
        meanSulfate
    }
    else
    {
        meanNitrate<-mean(filtermyData$nitrate,na.rm=TRUE)
        meanNitrate
    }
}

1 个答案:

答案 0 :(得分:0)

使用[和$子集返回一个data.frame。尝试使用向量mean(filtermyData[['nitrate']],na.rm=T) 它对我有用。