【问题标题】:argument is not numeric or logical: returning NA in R参数不是数字或逻辑:在 R 中返回 NA
【发布时间】:2015-02-04 11:11:33
【问题描述】:

我正在尝试编写一个函数来计算列的平均值。该函数具有参数目录和列名。但是,我不断收到错误“参数不是数字或逻辑:返回 NA”:

pollutantmean <- function(directory, pollutant) {

    directoryVal <- directory
    pollutantVal <- pollutant

    pollutantData <- read.csv(directoryVal)
    meanVal <- mean(pollutantData$pollutantVal, na.rm = TRUE)

}

我是这样称呼它的:

pollutantmean("001.csv", "nitrate")

“nitrate”是列名之一。

请注意,以下内容有效,所以我不确定为什么它在我的函数中不起作用:

mydata <- read.csv("001.csv")
mean(mydata$nitrate, na.rm = TRUE)

请帮忙。谢谢你。

【问题讨论】:

    标签: r numeric na


    【解决方案1】:

    我想添加一个更正。 其实应该是

    meanVal <- mean(pollutantData[,pollutantVal], na.rm = TRUE)
    

    注意,pollutantVal 之前,因为pollutantVal 是一列,因此需要被索引。

    【讨论】:

      【解决方案2】:

      您应该尝试meanVal &lt;- mean(pollutantData[pollutantVal], na.rm = TRUE),实际上您的数据框pollutantData 没有任何列调用pollutantVall,所以您有pollutantData$pollutantVal,即NULL。如果要使用字符访问数据框列,则必须使用方括号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 1970-01-01
        • 2021-01-29
        • 2020-11-16
        • 2022-01-18
        • 1970-01-01
        • 2018-08-11
        相关资源
        最近更新 更多