首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解lm与环境

了解lm与环境
EN

Stack Overflow用户
提问于 2011-07-29 18:38:02
回答 2查看 2.1K关注 0票数 6

我正在使用参数lm()执行formuladatana.actionweights。我的权重存储在一个数字变量中。

  • 当我将公式指定为一个字符(即formula = "Response~0+.")时,我得到了一个错误,即权值不是适当的长度(即使是这样)。
  • 当我指定没有引号的公式(即formula = Response~0+.)时,函数工作得很好。

我在lm()文档中偶然发现了这句话:

所有权重、子集和偏移量的计算方法与公式中的变量相同,即先在数据中计算,然后在公式环境中计算。

这对我来说很难理解,但我感觉到它包含了我问题的答案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-29 20:46:06

(这与你遇到的真正问题没有任何关系,DWin已经谈到了这一点,你的问题上的评论员也提到了这一点,但作为对你引用的部分文档的解释)

引用的帮助信息意味着,用于在模型公式中查找变量/对象引用的过程与查找提供给参数权重、子集等的变量/对象的过程相同。

R查找公式中引用的对象以及参数权重、子集和偏移量,首先在数据对象中,然后在公式的环境中(通常是交互使用期间的全局环境)。

文档之所以明确提到这一点,是因为lm()和许多使用模型公式接口的R函数一样,使用所谓的标准非标准计算。结果是,假设一个人提供了weights = foo,R不一定会在评估论点时寻找对象foo。相反,它将在提供给data参数的对象中查找一个名为data的对象,如果它在那里找不到它,那么在附加到模型公式的环境中(正如前面提到的,并不总是必须是全局环境)。

票数 6
EN

Stack Overflow用户

发布于 2011-07-29 20:06:35

当您构造一个拟为公式的参数时,解析器将“尝试它”。它“期望”论点是一个R意义上的语言调用。它并不期望它是一个由引号分隔的字符串。这就是为什么你会看到人们用粘贴(.)来构造公式参数。但是,通过将字符串或更正确的“字符对象”作为as.formula()的参数来完成它们。返回的内容被赋予了一个“公式”类和一个“调用”模式:

代码语言:javascript
复制
> class( as.formula("Y ~ x") )
[1] "formula"
> mode( as.formula("Y ~ x") )
[1] "call"s
> class( "Y ~ x")
[1] "character"
> mode( "Y ~ x")
[1] "character"
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6877534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档