问题描述
取summary(lm(wt~mpg,data=mtcars))->a
。 a$r
返回 NULL
,表明没有以 r
开头的变量名称。然而,a$residuals
和 a$r.squared
都给出了有效的输出,这与这个前提相矛盾。我对 $
运算符的误解是什么?我认为它总是部分匹配。
解决方法
?pmatch
中有一个线索(在 ?$
中顺便引用)。
nomatch:在不匹配的或乘以部分匹配的位置返回的值。
在 pmatch
的情况下,它是 NA_integer_
,但在 $
的情况下,我想它是 NULL(我真的不想深入 R 源代码验证码)。
更具体地说,"Indexing by vectors" section of the R language manual 表示
x$aa
将匹配 x$aabb
如果 x
不包含名为“aa”的组件并且“aabb”是唯一带有前缀“aa”的名称。
它没有明确说明否则会返回 NULL,但通常是在没有匹配项(例如 a$junk
)时得到的结果。
在更抽象的层面上,当有多个部分匹配时,很难想出一种不出所料/有原则/无危险的方法来解决歧义:选择第一个字母(可能因地区等而异) ?选择数字指数最低的那个?