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

wrs*_*der 7 r

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

subset(mtcars, cyl = 4)
Run Code Online (Sandbox Code Playgroud)

用单等于=而不是双等于==

为什么它会无声地失败,即返回未过滤的列表,而不是打破错误?

jor*_*ran 8

什么是实际发生的情况是,cyl = 4作为附加被处理命名参数传递给...subset.data.frame,所以实际上有没有subset论据与过滤.

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

例如,如果一个包实现了一个新的S3方法,subset那么有一个实际的附加参数叫做cyl