当我使用单个equals时,为什么R子集会无声地失败

时间:2015-01-30 16:32:57

标签: r

我在R

中犯了这个菜鸟错误
subset(mtcars, cyl = 4)

单个等于=而非双等于==

为什么它会以静默方式失败,即返回未过滤的列表,而不是打破错误?

1 个答案:

答案 0 :(得分:8)

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

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

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