按行组选择第一个第n行的行数不同

Ton*_*ony 4 r dataframe

我喜欢在数据框中选择每个组的第一行(2,3,0,4)行.

> f<-data.frame(group=c(1,1,1,2,2,3,4),y=c(1:7))
> 
>   group y
>      1 1
>      1 2
>      1 3
>      2 4
>      2 5
>      3 6
>      4 7
Run Code Online (Sandbox Code Playgroud)

并获得如下数据帧

group y
1 1
1 2
2 4
2 5
4 7
Run Code Online (Sandbox Code Playgroud)

我试图使用by,head但头部不采取矢量.

谢谢您的帮助.

Aar*_*ica 5

更传统的lapply:

k <- c(2,3,0,4)
fs <- split(f, f$group)
do.call(rbind,lapply(seq_along(k), function(i) head(fs[[i]], k[i])))
Run Code Online (Sandbox Code Playgroud)

结果是:

  group y
1     1 1
2     1 2
4     2 4
5     2 5
7     4 7
Run Code Online (Sandbox Code Playgroud)