2

我明白,在一个公式中,y ~ x我将“y”视为“x”的函数。在数学中,这类似于f(x) = x.

在 R 中,像 xtabs 这样的函数可以采用没有左侧的公式对象,例如xtabs( ~ x). 根据我对公式的理解,我现在在数学中没有将任何东西视为“x”的函数= x,但这显然不是 R 理解公式的方式(例如,它返回一个因子的列联表)。

那么我怎样才能理解空左手参数的含义呢?

我确信这已经在某处得到解释,但我很难在谷歌上搜索“R ~”。

4

3 回答 3

3

公式仅在使用它们的特定函数的上下文中才有意义。相同的公式可能意味着与一个函数与另一个函数完全不同的东西。

在这种情况下,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)
于 2013-05-10T08:36:57.220 回答
2

公式的使用在 R 中并不紧密;虽然有一些工具可以更轻松地解析公式,例如创建对比度,但包作者需要对解析后的内容做一些有用的事情。

在计数的上下文中,您经常会发现没有左侧的 ~x,例如在格条形图或直方图中。通常,您可以将空的左侧视为“计数”。

于 2013-05-10T08:31:56.397 回答
0

与此同时,我学到了以下内容,并想将其添加到已经给出的答案中:

双边公式,例如 inplot(y ~ x)或,是关于因变量和自变量(组)之间的依赖关系的不对称问题lm(y ~ x)的符号表示。因变量位于公式的左侧,您可以将公式读作“(左侧)作为(右侧)的函数”。

一个单边公式,例如xtabs(~ x + y)或是关于两个“相等”变量(例如,两者都依赖、都独立或未知依赖)之间的相关性(在广泛的日常意义上)的对称问题cor.test(~ x + y)的符号表示。

随时纠正我糟糕的英语。

于 2013-07-18T11:46:00.413 回答