如何计算行数?

Joh*_*ark 5 r list dataframe

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

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
Run Code Online (Sandbox Code Playgroud)

我糟糕的代码:

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

$a
[1] 2

$b
[1] 2

$c
[1] 2
Run Code Online (Sandbox Code Playgroud)

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

 # number of rows in each component dataframe of the list 
 myvec
[1] 10  5  8
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间......我很感激......

Jos*_*ich 16

试试这个:

myvec <- sapply(mylist, NROW)
Run Code Online (Sandbox Code Playgroud)

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

NROW并且NCOL很好,因为它们倾向于为大多数对象提供"预期"结果.我用他们很多互动,但回落到nrow,ncollength书写时的稳定代码(如程序,包),因为它们避免了一些额外的函数调用的开销.