我是R的初学者。实际上,我正在尝试编写我的第一个函数。
我在电脑上的一个目录中寻找csv文件,然后我把它们放在一个数据帧中,然后我问一些变量的平均值。
我有两个变量:硫酸盐和硝酸盐。
我的功能适用于硝酸盐,但不适用于硫酸盐。我真的不知道怎么了。R工作室给了我一条线索:在mean.default(目录$state,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")}
}
你能帮我吗?
Caroline
- 第一行缺少一个开头的大括号
- 只有当存在一个名为
full_files
的全局变量时,此函数才会起作用;考虑将其传递给函数显式 - 可能是
else if
子句中的拼写错误:directory$sulfate
,而不是directory$suftate
- 此函数不返回任何内容;执行它实际上不会有任何作用。从技术上讲,运行
mean()
会打印一些输出,但情况可能并不总是如此,尤其是从命令行,或者从另一个函数或脚本调用时。考虑将mean()
包装在print()
中(或者,更好的是,将return
包装起来,这将允许您将平均值分配给其他变量(