【发布时间】:2015-08-26 13:36:47
【问题描述】:
有几篇文章与在 R 中获取回归公式中的变量列表相关 - 基本答案是使用 all.vars。例如,
> all.vars(log(resp) ~ treat + factor(dose))
[1] "resp" "treat" "dose"
这很好,因为它去掉了所有的函数和运算符(以及重复,未显示)。但是,当公式中包含$ 运算符或下标时,这是有问题的,例如在
> form = log(cows$weight) ~ factor(bulls[[3]]) * herd$breed
> all.vars(form)
[1] "cows" "weight" "bulls" "herd" "breed"
这里将数据框名称cows、bulls、herd标识为变量,实际变量的名称解耦或丢失。相反,我真正想要的是这样的结果:
> mystery.fcn(form)
[1] "cows$weight" "bulls[[3]]" "herd$breed"
最优雅的方法是什么?我有一个建议作为答案发布,但也许有人有更优雅的解决方案并且会赢得更多选票!
【问题讨论】:
-
嗯,带有
$和[[的公式在使用时非常有问题,应该避免使用。您认为有哪些必要的场景是什么?如果我有~x[[y]]和y<-"p"会怎样。这个函数会返回什么? -
我同意应该避免使用它们。但我是一个包开发者,一些用户会适应我所展示的模型(虽然通常不是那么极端)。