首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建均值函数,返回有关NAs的错误消息

创建均值函数,返回有关NAs的错误消息
EN

Stack Overflow用户
提问于 2015-04-20 13:43:01
回答 1查看 112关注 0票数 0

我正在尝试编写一个函数,它将返回多个.csv文件中列的平均值。但是,该函数似乎使用了我的平均值计算,因为它返回NA值:

代码语言:javascript
运行
复制
pollutantmean <- function(directory, pollutant, id = 1:332){
  dy <- list.files("specdata", full.names = T)
  df <- data.frame()
  for(i in id){
    rbind(df,read.csv(dy[i]))
  }
  if(pollutant == "nitrate"){mean(df$nitrate, na.rm = TRUE)} 
  if(pollutant == "sulfate"){mean(df$sulfate, na.rm = TRUE)}
}

非常感谢您对解决此问题的建议。

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 13:48:53

尝试显式返回自定义函数的平均值,如下所示:

代码语言:javascript
运行
复制
pollutantmean <- function(directory, pollutant, id = 1:332) {
    dy <- list.files("specdata", full.names=TRUE)
    df <- data.frame()
    for (i in id) {
        df <- rbind(df, read.csv(dy[i]))
    }
    if(pollutant == "nitrate") { return(mean(df$nitrate, na.rm=TRUE)) }
    if(pollutant == "sulfate") { return(mean(df$sulfate, na.rm=TRUE)) }
}

如果这不能解决问题,那么您可能有包含字符数据的数据框列,从而导致R为您提供NA值。在pollutantmean函数中插入以下两行,以查看您是否在处理数值列:

代码语言:javascript
运行
复制
print(class(df$nitrate))
print(class(df$sulfate))

如果你看到"factor",或者任何不是数字的东西,那么你就会知道你的输入数据包含的不是纯数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29740046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档