【问题标题】:Subscript out of range error in RR中的下标超出范围错误
【发布时间】:2014-10-30 14:11:53
【问题描述】:

我是 R 新手,遇到了一个奇怪的错误。我有这样的表:

 dat<-c(1,2,3,4,4,53,62,345,3,4,346,23,34,52,34,2345,23,4)
 dat.table<-table(dat)

这将创建一个表,我想从该表中获取特定列。当我尝试dat.table[[3]] 时,它给了我 2,这是向量中 3 的真实出现。但是当我尝试dat.table[[2345]]时,虽然rownames(dat.table)中存在2345,但它给出了以下错误:

Error in b[[2345]] : subscript out of bounds

这可能是一个基本问题,但奇怪的是为什么 R 对不同的行名表现不同! 感谢您的帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    偶然地,“3”的出现存储在dat.table的第3列。

    让我们试试这个例子(添加了 2 个零):

    dat <- c(0,1,2,3,4,4,53,62,345,3,4,346,23,34,0,52,34,2345,23,4)
    dat.table[[3]]
    [1] 1
    

    糟糕,值错误。现在,让我们试试

    dat.table[["3"]]
    [1] 2
    

    正确

    “2345”是一个字符,列的名称。当您键入dat.table[[2345]] 时,您会尝试访问不存在的第 2345 个元素。您需要指定列的名称

    dat <- c(1,2,3,4,4,53,62,345,3,4,346,23,34,52,34,2345,23,4)
    dat.table <- table(dat)
    dat.table[["2345"]]
    [1] 1 
    

    【讨论】:

      【解决方案2】:

      用于访问 dat.table 项目:

      dat.table['2345']
      2345 
         1 
      

      dat.table 不是 data.frame。请尝试以下操作:

      ddf = data.frame(dat.table)
      ddf
          dat Freq
      1     1    1
      2     2    1
      3     3    2
      4     4    4
      5    23    2
      6    34    2
      7    52    1
      8    53    1
      9    62    1
      10  345    1
      11  346    1
      12 2345    1
      
       ddf[12,]
          dat Freq
      12 2345    1
      
      ddf[12,2]
      [1] 1
      

      ddf[[i]] 给出列号 i:

      ddf[[1]]
       [1] 1    2    3    4    23   34   52   53   62   345  346  2345
      Levels: 1 2 3 4 23 34 52 53 62 345 346 2345
      
      ddf[[2]]
       [1] 1 1 2 4 2 2 1 1 1 1 1 1
      

      对于宽数据框:

      tt = data.frame(t(ddf))
      
      tt
           X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11  X12
      dat   1  2  3  4 23 34 52 53 62 345 346 2345
      Freq  1  1  2  4  2  2  1  1  1   1   1    1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-27
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 2021-09-18
        相关资源
        最近更新 更多