我理解在类似y ~ x
的公式中,我将“y”视为“x”的函数。在数学中,这将类似于f(x) = x
。
在R中,像xtabs这样的函数可以在没有左侧的情况下获取公式对象,例如xtabs( ~ x)
。根据我对公式的理解,我现在在数学= x
中看不出“x”的函数,但这显然不是R如何理解公式(它返回一个因子的列联表,例如)。
那么我如何理解空左手参数的含义呢?
我确定已在某处解释过,但我很难用谷歌搜索“R~”。
答案 0 :(得分:2)
在R中,公式的使用并不强烈;虽然有一些工具可以更容易地解析公式,例如创建对比,但是包装作者可以根据解析的内容做一些有用的事情。
您经常会在没有左侧的情况下找到~x,例如计数,例如在格子条形图或直方图中。通常,您可以将空的左侧视为“计数”。
答案 1 :(得分:2)
公式仅在与其一起使用的特定函数的上下文中具有意义。相同的公式可能意味着一个功能与另一个功能完全不同。
在xtabs
的情况下,它将左手侧与右手侧的水平相加,如果没有左手侧则给出计数。也就是说,默认左手侧可以被视为1的向量。例如这些都给出了相同的结果
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)
答案 2 :(得分:0)
与此同时,我学到了以下内容,并希望将其添加到已经给出的答案中:
双面公式,例如plot(y ~ x)
或lm(y ~ x)
,是不对称问题的符号表示(一组)依赖和自变量。因变量位于公式的左侧,您可以将公式读作“(左侧)作为(右侧)的函数”。
单边公式,例如xtabs(~ x + y)
或cor.test(~ x + y)
,是关于相关性的对称问题的符号表示(在两个“相等”变量之间的广泛日常感觉(例如,依赖,独立或未知依赖)。
随意纠正我的不良英语。