【问题标题】:Error when calculating mean + undefined columns selected + R计算平均值时出错 + 选择了未定义的列 + R
【发布时间】:2020-03-08 23:12:38
【问题描述】:

我有一个名为 'directory' 的数据框,它有 4 列,即 a、b、c、d。我需要根据输入找到 b 列或 c 列的平均值。

b 列和 c 列都有NA 和数值

TotalMean<- function(directory, pollutant = "b", id = 1:10)
{
    mean(subset(directory, ID=  id, select = directory[[pollutant]]), na.rm = TRUE)
}

TotalMean<- function(directory, pollutant = "b", id = 1:10)
{
    mean(subset(directory, ID=  id, select = directory$pollutant), na.rm = TRUE)
}

TotalMean<- function(directory, pollutant = "b", id = 1:10)
{
    mean(subset(directory, ID=  id, select = directory[,pollutant]), na.rm = TRUE)
}

上面提到的所有功能我都试过了。但是它给了我以下错误。

由于我是 R 编程新手,我不确定为什么会这样。任何帮助将不胜感激。

提前致谢

【问题讨论】:

  • 对不起,忘了提及错误。以下是错误。 [.data.frame(directory, , directory$b) 中的错误:选择了未定义的列
  • colMeans 不适合您的问题吗?你能提供你的数据集的reproducible example 吗?
  • 我使用 colMeans 也遇到同样的错误
  • 你能提供你用来计算colMeans的代码吗? (以及可重复的示例;))
  • 您错误地使用了subset。您根本不能那样使用它(即,以编程方式将变量传递给它的subsetselect 参数)。阅读help("subset") 中的警告。然后使用help("[") 中详述的子集。

标签: r dataframe mean


【解决方案1】:

您不需要子集,您可以简单地执行以下操作

TotalMean <- function(directory, pollutant = "b", id = 1:10) {
    mean(directory[id, pollutant], na.rm=TRUE)
}

directory <- data.frame("a" = c(1,NA,2), "b" = c(NaN,2,3))
print(TotalMean(directory,"a"))
print(TotalMean(directory,"b"))

【讨论】:

  • 即使 na.rm=TRUE?什么数据进入均值函数?
  • 是的。数据是数字或 NA。主要是浮点数。
  • @sreelekha 我编辑了我的答案以表明它适用于 NaN 和 NA。我能想到它返回 NaN 的唯一原因是如果你只计算 NA 的平均值。除非您提供一个最小的工作示例来说明什么是行不通的,否则我无法进一步帮助您。祝你好运!
猜你喜欢
  • 2016-10-13
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2017-12-05
相关资源
最近更新 更多