【问题标题】:Beginner in R : writing my first function work only for one variableR中的初学者:编写我的第一个函数仅适用于一个变量
【发布时间】:2019-04-13 23:30:20
【问题描述】:

我是 R 的初学者。我实际上是在尝试编写我的第一个函数。

我正在计算机上的目录中查找 csv 文件,然后将它们放入数据框中,然后询问某个变量的平均值。

我有 2 个变量:硫酸盐和硝酸盐。

我的函数适用于硝酸盐,但不适用于硫酸盐。我真的不知道出了什么问题。 R studio 给了我一个线索:在 mean.default(directory$suftate, na.rm = TRUE) 中:

参数不是数字或逻辑:返回 NA

但我不知道如何处理这些信息。

我的功能是:

 pollutantmean <- function (directory, polluant = "nitrate", id = 1:332)
 directory <- data.frame()
 for (i in id)
{directory <- rbind(directory, read.csv(full_files[i]))} 
if (polluant == "nitrate"){
mean(directory$nitrate,na.rm = TRUE)} 
else if (polluant == "sulfate"){
mean(directory$suftate,na.rm = TRUE)}
else {print("KO")}
}

你能帮帮我吗?

卡罗琳

【问题讨论】:

  • 您有search 寻求答案吗?这个 Coursera 主题已经有 136 个关于 SO 的文章
  • 你好,卡罗琳。这是一项家庭作业,根据 Coursera 荣誉守则,您不得在互联网上发布家庭作业的完整答案。
  • 嗨@LenGreski,这不完全是答案......它不起作用!老师鼓励你寻求帮助;)
  • Coursera Honor Code 明确指出,“除非得到教师的明确许可,否则您不得与其他任何人分享您的家庭作业、测验或考试的解决方案。”在 JHU 课程中,某些作业(例如那些学生必须发布到 GitHub 或 RPubs)具有明确的共享权限。当学生有问题时,他/她可以发布一些代码,但不能发布完整的答案,无论代码是否有效。我认识到 Coursera 政策与 SO 对好问题的定义相冲突。

标签: r function if-statement numeric


【解决方案1】:
  1. 第一行缺少左大括号
  2. 此函数仅在存在名为full_files 的全局变量时有效;考虑将其传递给 明确的函数
  3. else if 子句中可能有错字:directory$sulfate,而不是 directory$suftate
  4. 此函数不返回任何内容;执行它实际上不会做任何事情。嗯,从技术上讲, 运行 mean() 会打印一些输出,但可能并非总是如此,尤其是从 命令行,或者从另一个函数或脚本调用时。考虑将 mean() 包装在 print() 中(或者,更好的是 returning 它,这样您就可以将平均值分配给其他变量)

【讨论】:

  • 非常感谢您的帮助!我真的很想自己做 :) 不复制另一个功能。但是我很抱歉,因为我没有看到错误的拼写。现在好了。谢谢!
猜你喜欢
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多