R 为什么$在线性模型的摘要上不部分匹配?

R 为什么$在线性模型的摘要上不部分匹配?,r,dollar-sign,R,Dollar Sign,取摘要(lm(wt~mpg,data=mtcars))->aa$r返回NULL,表明没有以r开头的变量名称。然而,a$residuals和a$r.squared都给出了有效的输出,这与这个前提相矛盾。我对$运算符的误解是什么?我认为它总是部分匹配。在?pmatch中有一条线索(在?$中引用) nomatch:在非匹配或部分匹配的相乘位置返回的值 在pmatch的情况下,它是NA_integer\uu,但是在$的情况下,我猜它是空的(我真的不想在R源代码中深入去确认) 更具体地说,报告说 x$aa

摘要(lm(wt~mpg,data=mtcars))->a
a$r
返回
NULL
,表明没有以
r
开头的变量名称。然而,
a$residuals
a$r.squared
都给出了有效的输出,这与这个前提相矛盾。我对
$
运算符的误解是什么?我认为它总是部分匹配。

?pmatch
中有一条线索(在
?$
中引用)

nomatch:在非匹配或部分匹配的相乘位置返回的值

pmatch
的情况下,它是
NA_integer\uu
,但是在
$
的情况下,我猜它是空的(我真的不想在R源代码中深入去确认)

更具体地说,报告说

x$aa
将匹配
x$aabb
如果
x
不包含名为“aa”的组件,且“aabb”是唯一具有前缀“aa”的名称

它并没有明确指出,否则将返回NULL,但这通常是在没有匹配项时得到的结果(例如,
a$junk


在更抽象的层面上,当存在多个部分匹配时,很难想出一种不令人惊讶/原则性/非危险的方法来解决歧义:选择第一个字母顺序的匹配(根据区域设置等可能有所不同)?选择数值索引最低的一个?

部分匹配在索引中已经很危险。它应该被删除,而不是扩展。我不是建议“改进”部分匹配;我的意思是返回
NULL
是一种明智的行为,因为很难想出更好的选择