R中的模型公式运算符创建什么数据结构?
多次提到模型公式操作符,但未能定义或解释有关公式类的任何内容 我很难从官方或非官方来源找到任何记录~operator语义的东西R中的模型公式运算符创建什么数据结构?,r,R,多次提到模型公式操作符,但未能定义或解释有关公式类的任何内容 我很难从官方或非官方来源找到任何记录~operator语义的东西 特别是,我对以下信息不感兴趣(“形式y~模型的表达式被解释为响应y由模型象征性指定的线性预测器建模的规范”)或使用场景,我想了解我在使用它时创建的是什么样的数据结构,以及如何在REPL上检查和分析它。不知道这是否有帮助,但是:它是一种语言对象-即R解析输入,但不尝试评估任何组件-使用类“公式” >f str(f) “公式”类语言a~b+(c+d) ..-attr(*,“
特别是,我对以下信息不感兴趣(“形式y~模型的表达式被解释为响应y由模型象征性指定的线性预测器建模的规范”)或使用场景,我想了解我在使用它时创建的是什么样的数据结构,以及如何在REPL上检查和分析它。不知道这是否有帮助,但是:它是一种
语言
对象-即R解析输入,但不尝试评估任何组件-使用类“公式”
>f str(f)
“公式”类语言a~b+(c+d)
..-attr(*,“.Environment”)=
如果您想使用这些对象,您需要知道它基本上存储为树,其中父节点、运算符或函数(~
、+
、(
)可以提取为第一个元素和子节点(与函数/运算符的“arity”数量相同)可提取为元素2..n,即
是f[[1]]
~
是f[[2]]
(第一个参数,即公式的LHS)a
是f[[3]]
b+(c+d)
是f[[3]][[1]]
+
isf[[3][[2]]
b
@user2554330指出,公式通常也有相关的环境;也就是说,它们携带一个指向创建它们的环境的指针任何关于这个问题更合适的标题的建议都可以。操作员帮助文件是
?`~`
或?tilde
,非常简短,如.list(y~x)
将向您显示运算符、左侧和右侧是?名称
对象或符号。不确定您还需要查找什么,公式不是很复杂,更适用于引用对象而无需评估。我没有投票关闭。也许您可以编辑为“我如何使用“公式”类的对象”?另一个重要方面是附加的环境。使用公式的函数通常有一个data
参数,并首先在data
中查找公式变量,然后在公式的环境中查找(递归,因为环境有父项)。当您创建公式对象时,环境就是您正在使用的环境(这会使在函数中创建公式的人感到困惑)。因此,这实际上只是一个符号编程工具,进一步的语义(至少是波浪线)仅由处理公式的代码叠加?我不太确定您的定义是什么“符号编程工具”是,但其余部分似乎是正确的。R公式的主要使用者是model.matrix()
和model.frame()
,尽管它们在其他上下文中使用(例如统计测试,如t.test()
,lattice
,ggformula
包)