【问题标题】:R: Count number of objects in list [closed]R:计算列表中的对象数[关闭]
【发布时间】:2010-12-16 23:11:20
【问题描述】:

有人可以推荐一个可以让我计算并返回列表中项目数的函数吗?

library(stringr)

l <- strsplit(words, "a")

if(# number of items in list l < 1) 
  next

【问题讨论】:

  • set.seed(123) l

标签: list r count


【解决方案1】:

length(x)

获取或设置向量(包括列表)和因子的长度,以及已为其定义方法的任何其他 R 对象的长度。

lengths(x)

将列表或原子向量 (is.atomic) 的每个元素的长度作为整数或数值向量获取。

【讨论】:

    【解决方案2】:

    R 像我这样的新人的建议:请注意,以下是单个对象的列表:

    > mylist <- list (1:10)
    > length (mylist)
    [1] 1
    

    在这种情况下,您不是在寻找列表的长度,而是在寻找它的第一个元素:

    > length (mylist[[1]])
    [1] 10
    

    这是一个“真实”的列表:

    > mylist <- list(1:10, rnorm(25), letters[1:3])
    > length (mylist)
    [1] 3
    

    另外,R 似乎将 data.frame 视为列表:

    > df <- data.frame (matrix(0, ncol = 30, nrow = 2))
    > typeof (df)
    [1] "list"
    

    在这种情况下,您可能对ncol()nrow() 感兴趣,而不是length()

    > ncol (df)
    [1] 30
    > nrow (df)
    [1] 2
    

    虽然length() 也可以工作(但当您的 data.frame 只有一列时,这是一个技巧):

    > length (df)
    [1] 30
    > length (df[[1]])
    [1] 2
    

    【讨论】:

      【解决方案3】:

      我花了很长时间试图弄清楚这一点,但这很简单!您可以使用length(·)length(mylist) 会告诉你 mylist 包含的对象数量。

      ...刚刚意识到有人已经回答了这个问题-对不起!

      【讨论】:

        【解决方案4】:

        让我们创建一个空列表(不是必需的,但很高兴知道):

        > mylist <- vector(mode="list")
        

        让我们在里面放一些东西 - 3 个组件/索引/标签(无论你想怎么称呼它),每个都有不同数量的元素:

        > mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
        

        如果您只对列表中的组件数量感兴趣,请使用:

        > length(mylist)
        [1] 3
        

        如果您对列表的特定组件中元素的长度感兴趣,请使用:(此处均引用相同的组件)

        length(mylist[[1]])
        [1] 10
        length(mylist[["record1"]]
        [1] 10
        

        如果您对列表所有组件中所有元素的长度感兴趣,请使用:

        > sum(sapply(mylist,length))
        [1] 17
        

        【讨论】:

          【解决方案5】:

          您也可以使用unlist(),这对于处理列表通常很有用:

          > mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9))
          
          > mylist
          $A
          [1] 1 2 3
          
          $B
          [1] 4 5 6
          
          $C
          [1] 7 8 9
          
          > unlist(mylist)
          A1 A2 A3 B1 B2 B3 C1 C2 C3 
           1  2  3  4  5  6  7  8  9 
          
          > length(unlist(mylist))
          [1] 9
          

          unlist() 也是一种在列表上执行其他函数的简单方法,例如:

          > sum(mylist)
          Error in sum(mylist) : invalid 'type' (list) of argument
          
          > sum(unlist(mylist))
          [1] 45
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-30
            • 1970-01-01
            • 2017-07-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多