RStudio中sum(1:n)报"argument 'y' is missing"错误原因咨询
为什么你的
sum(1:5)会报错? 这种情况几乎可以肯定是你不小心覆盖了R内置的sum()函数。R的灵活性允许用户自定义和内置函数同名的函数,但这么做之后,再调用sum时,R会优先执行你自己定义的版本,而不是base包中原本的求和函数。
怎么验证这个问题?
- 先在控制台运行
print(sum),看看输出的内容。如果显示的是你自己写的函数(比如一个要求传入x和y两个参数的函数),那就能实锤是这个原因了。 - 或者运行
environment(sum),如果返回的不是<environment: base>,说明当前的sum不是内置函数,而是你自定义的。
怎么解决?
- 如果不需要这个自定义的
sum函数了,直接运行rm(sum)删除它,之后再调用sum(1:5)就会自动使用内置的求和函数,问题就能解决。 - 如果你还想保留自己的
sum函数,但偶尔需要用内置版本,可以明确指定调用base包的函数:base::sum(1:5)。
举个简单的例子,如果你之前不小心写了这样的代码:
sum <- function(x, y) { x + y }
那这个自定义函数要求必须传入两个参数,当你调用sum(1:5)时,只给了一个参数,自然就会抛出argument "y" is missing, with no default的错误,而sum(1,2,3,4,5)能运行,是因为这个自定义函数会把前两个参数相加,后面的参数被忽略了(R的函数会自动忽略多余的参数)。
内容的提问来源于stack exchange,提问作者최준석
相关产品推荐
相关产品推荐

