我在R中犯了这个菜鸟错误
subset(mtcars, cyl = 4)
Run Code Online (Sandbox Code Playgroud)
用单等于=而不是双等于==
为什么它会无声地失败,即返回未过滤的列表,而不是打破错误?
什么是实际发生的情况是,cyl = 4作为附加被处理命名参数传递给...在subset.data.frame,所以实际上有没有subset论据与过滤.
至于为什么它的编程方式是在这种情况下不抛出错误,你必须要求R Core得到真正的答案.但根据R如何进行函数参数匹配,似乎很难检测到它.或者至少,尴尬.
例如,如果一个包实现了一个新的S3方法,subset那么有一个实际的附加参数叫做cyl?