【问题标题】:How to count rows?如何计算行数?
【发布时间】:2011-11-12 12:03:33
【问题描述】:

我有一个简单的问题(至少对我来说不是......)。我已经以包含多个不同长度的数据帧的列表结束。我想计算每个数据帧的长度..

mylist <- list (a = data.frame(i = 1:10, j= 11:20), b = data.frame(i = 1:5, j= 11:15), c = data.frame(i = 1:8, j= 11:18))
mylist
$a
    i  j
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20

$b
  i  j
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15

$c
  i  j
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 6 16
7 7 17
8 8 18

我可怜的代码:

lapply(mylist, function(y)length(y) 

$a
[1] 2

$b
[1] 2

$c
[1] 2

哦……不…… 如何计算每个组件数据框中的行数并获得一个新向量:

 # number of rows in each component dataframe of the list 
 myvec
[1] 10  5  8

感谢您的宝贵时间...非常感谢...

【问题讨论】:

  • sapply 而不是lapply

标签: list r dataframe


【解决方案1】:
    int q = list.Length;
    int f = list.GetLength(0);
    int e = list.GetLength(1);
    Console.WriteLine("length of row :" + f);
    Console.WriteLine("length of column :" + e);
    Console.WriteLine("length of components in list :" + q);    

可以找到数组中组件的总数量或元素的长度,如变量“q”所示。要查找数组或列表中的行数,请使用函数 GetLength(),输入值为 0,对于行数,我们可以使用相同的函数,输入值为 1。

【讨论】:

    【解决方案2】:
    lengths(mylist) 
    

    将返回列表中每个元素的长度。注意“长度”(复数)

    【讨论】:

      【解决方案3】:

      试试这个:

      myvec <- sapply(mylist, NROW)
      

      length 使用 data.frames 给出“奇怪”的结果,因为 data.frames 实际上是相同长度的向量列表。 length(data.frame) 为您提供基础列表的长度,即 data.frame 的列数。

      NROWNCOL 很好,因为它们往往会为大多数对象提供“预期”的结果。我经常以交互方式使用它们,但在编写稳定的代码(例如程序、包)时回退到 nrowncollength,因为它们避免了一些额外函数调用的开销。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-31
        • 2011-01-04
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-15
        相关资源
        最近更新 更多