我明白,在一个公式中,y ~ x
我将“y”视为“x”的函数。在数学中,这类似于f(x) = x
.
在 R 中,像 xtabs 这样的函数可以采用没有左侧的公式对象,例如xtabs( ~ x)
. 根据我对公式的理解,我现在在数学中没有将任何东西视为“x”的函数= x
,但这显然不是 R 理解公式的方式(例如,它返回一个因子的列联表)。
那么我怎样才能理解空左手参数的含义呢?
我确信这已经在某处得到解释,但我很难在谷歌上搜索“R ~”。
公式仅在使用它们的特定函数的上下文中才有意义。相同的公式可能意味着与一个函数与另一个函数完全不同的东西。
在这种情况下,xtabs
将左侧与右侧的水平相加,如果没有左侧,则给出计数。也就是说,默认的左手边可以看作是一个向量。例如,这些都给出相同的结果
x <- c(1, 1, 2, 2, 2)
# 1
xtabs(~ x)
# 2
ones <- rep(1, length = length(x))
xtabs(ones ~ x)
这也给出了类似的结果,但在这种情况下,结果是一个数组而不是一个表:
# 3
tapply(ones, x, sum)
公式的使用在 R 中并不紧密;虽然有一些工具可以更轻松地解析公式,例如创建对比度,但包作者需要对解析后的内容做一些有用的事情。
在计数的上下文中,您经常会发现没有左侧的 ~x,例如在格条形图或直方图中。通常,您可以将空的左侧视为“计数”。
与此同时,我学到了以下内容,并想将其添加到已经给出的答案中:
双边公式,例如 inplot(y ~ x)
或,是关于因变量和自变量(组)之间的依赖关系的不对称问题lm(y ~ x)
的符号表示。因变量位于公式的左侧,您可以将公式读作“(左侧)作为(右侧)的函数”。
一个单边公式,例如xtabs(~ x + y)
或是关于两个“相等”变量(例如,两者都依赖、都独立或未知依赖)之间的相关性(在广泛的日常意义上)的对称问题cor.test(~ x + y)
的符号表示。
随时纠正我糟糕的英语。