【问题标题】:What does a formula with no left argument mean in R, e.g. ~x?没有左参数的公式在 R 中是什么意思,例如〜x?
【发布时间】:2023-03-22 12:47:01
【问题描述】:

我知道在y ~ x 这样的公式中,我将“y”视为“x”的函数。在数学上,这类似于f(x) = x

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

那么我该如何理解空左手参数的含义呢?

我确定这已在某处进行了解释,但我很难在谷歌上搜索“R ~”。

【问题讨论】:

    标签: r formula


    【解决方案1】:

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

    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)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 如果不是太麻烦的话,能不能补充一些例子?
      • 示例在那里,我假设您已经查看了提到的 lattice::barplot 和 lattice::histogram 的文档。
      • &gt; ?lattice No documentation for ‘lattice’ in specified packages and libraries: you could try ‘??lattice’
      【解决方案3】:

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

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

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

      请随时纠正我的英语不好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-08
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多