【问题标题】:Why does $ not partially match on summaries of linear models?为什么 $ 与线性模型的摘要不部分匹配?
【发布时间】:2021-06-11 00:06:06
【问题描述】:

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

【问题讨论】:

    标签: r dollar-sign


    【解决方案1】:

    ?pmatch 中有一条线索(在 ?$ 中顺便提及)。

    nomatch:在不匹配的或乘以部分匹配位置返回的值。

    pmatch 的情况下是NA_integer_,但在$ 的情况下我猜它是NULL(我真的不想在R 源代码的深处进行确认)。

    更具体地说,"Indexing by vectors" section of the R language manual

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

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

    在更抽象的层面上,当存在多个部分匹配时,很难想出一种不令人惊讶/有原则/不危险的方法来解决歧义:选择第一个字母顺序的匹配项(可能会因语言环境等而有所不同) ?选择数字索引最低的那个?

    【讨论】:

    • 部分匹配在索引中已经很危险了。它应该被删除而不是扩展。
    • 我并不是说应该“改进”部分匹配;我建议返回 NULL 是一种明智的行为,因为很难想出更好的选择
    猜你喜欢
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多