为什么当我使用单等号时 R 子集会静默失败

  • 本文关键字:子集 失败 静默 r
  • 更新时间 :
  • 英文 :


我在R中犯了这个菜鸟错误

subset(mtcars, cyl = 4)

使用单等号=而不是双等号==

为什么它会静默失败,即返回未过滤的列表,而不是因错误而中断?

实际发生的是,cyl = 4被视为传递给...的附加命名参数 subset.data.frame ,因此实际上没有subset参数可以过滤。

至于为什么它以这样一种方式编程,在这种情况下不会抛出错误,你必须向R Core询问真正的答案。但是根据R如何进行函数参数匹配,这似乎很难检测。或者至少,很尴尬。

例如,如果一个包为具有名为 cyl 的实际附加参数的subset实现了一个新的 S3 方法怎么办?

最新更新