我在R
中犯了这个菜鸟错误subset(mtcars, cyl = 4)
单个等于=
而非双等于==
为什么它会以静默方式失败,即返回未过滤的列表,而不是打破错误?
答案 0 :(得分:8)
实际发生的是cyl = 4
被视为...
中传递给subset.data.frame
的其他命名参数,因此实际上没有subset
参数来过滤。
至于为什么它的编程方式是在这种情况下不抛出错误,你必须向R Core询问真正的答案。但是根据R如何进行函数参数匹配,似乎很难检测到它。或者至少,尴尬。
例如,如果一个包为subset
实现了一个具有名为cyl
的实际附加参数的新S3方法会怎么样?