当您构造一个旨在成为公式的参数时,解析器会"尝试它".它"期望"该论证是R语言中的语言调用.它不希望它是由引号分隔的字符串.这就是为什么你会看到人们使用paste(.)构造公式参数,然后通过将字符串或更正确的"character object"作为参数放到as.formula()来完成它们.返回的内容被赋予了一类"公式"和"呼叫"模式:
> 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"
Run Code Online (Sandbox Code Playgroud)
(这与您遇到的实际问题无关,[@DWin已经解决了这个问题,正如您的问题评论员所说的那样],但是通过对您引用的文档部分的解释)
引用的帮助信息意味着使用相同的过程来查找模型公式中的变量/对象引用,用于查找提供给参数权重,子集等的变量/对象.
R查找公式中引用的对象以及参数权重,子集和偏移量,首先在数据对象中,然后在公式的环境中(通常是交互式使用期间的全局环境).
文档明确提到这一点的原因是因为lm()
使用模型公式接口的许多R函数使用所谓的标准非标准评估.最重要的是说一个供应weights = foo
,R不一定会foo
在评估参数时寻找对象.相反,它将foo
在提供给data
参数的对象中查找具有名称的对象,如果它没有在那里找到它,那么在附加到模型公式的环境中,如上所述,并不总是必须是全球环境.
归档时间: |
|
查看次数: |
1691 次 |
最近记录: |