【问题标题】:How to create dimname names to an already existing table? [duplicate]如何为已经存在的表创建 dimname 名称? [复制]
【发布时间】:2016-08-15 21:11:16
【问题描述】:

R 中,如何为已经存在的表创建 dimname 名称?

现在我有一张如下表。

我想使用 dnn 选项命名每个维度 表的,比如

obs=as.table(obs,dnn=c("Math","Statistics"))

但是 dimname 的名称没有正确命名。

如何为现有表创建 dimname 名称?

有关此问题的更多信息。

我想知道的是如何为列联表中的每个变量创建名称。也就是说,例如,第一个维度,我将变量命名为“数学”,它有两行“不喜欢”和“喜欢”。然后,对于第二个维度,我将变量命名为“统计”,它有两列“不喜欢”和“喜欢”

所以我希望表格如下所示:

【问题讨论】:

    标签: r


    【解决方案1】:

    这是一个玩具示例:

    obs <- table(gl(2,2), gl(2,2))
    #    1 2
    #  1 2 0
    #  2 0 2
    
    dimnames(obs) <- list(c("Math","Statistics‌​"), c("Math","Statistics‌​"))
    #           Math Statistics‌​
    #Math          2          0
    #Statistics‌​    0          2
    

    你不能用as.table来实现你想要的,因为:

    > as.table.default
    function (x, ...) 
    {
        if (is.table(x)) 
            return(x)
    ....
    

    您的obs 很容易成为一张桌子,因此as.table 什么也不做,只是立即返回。


    也许我应该更好地解释这一点。我想知道的是如何为列联表中的每个变量创建名称。也就是说,例如,第一个维度,我将变量命名为“数学”,它有两行“不喜欢”和“喜欢”。然后,对于第二个维度,我将变量命名为“统计”,它有两列“不喜欢”和“喜欢”。

    那么你需要一个命名列表:

    dimnames(obs) <- list(Math = c("dislike", "like"), Statistics = c("dislike", "like"))
    
    #          Statistics
    #Math      dislike like
    #  dislike       2    0
    #  like          0    2
    

    【讨论】:

      【解决方案2】:

      我会这样写: obs=as.table(obs,dnn=list("数学","统计")) 使用 'list' 而不是 'c'。

      【讨论】:

      • 也许我应该更好地解释这一点。我想知道的是如何为列联表中的每个变量创建名称。也就是说,例如,第一个维度,我将变量命名为“数学”,它有两行“不喜欢”和“喜欢”。然后,对于第二个维度,我将变量命名为“统计”,它有两列“不喜欢”和“喜欢”。
      猜你喜欢
      • 2019-08-14
      • 1970-01-01
      • 2022-01-06
      • 2023-04-05
      • 2018-10-27
      • 2013-01-30
      • 2015-03-31
      • 2020-04-16
      相关资源
      最近更新 更多