首页 > 解决方案 > R:选择数据框的每 n 行并将每 n 行放入列表的元素中

问题描述

就像标题所建议的那样,我想取一个数据帧的每 n 行并将每个块放入一个列表中。

我有一些路径级别的数据堆叠在数据框中,并希望将每个路径分成列表的元素。

我拥有的数据:

df3 <- as.data.frame(matrix(c(1,1,1,2,2,2,3,3,3,1,2,3,1,2,3,1,2,3,5,6,7,4,6,5,6,7,6), nrow=9, ncol=3))
names(df3) <- c("path","month", "data")
print(df3)
  path month data
1    1     1    5
2    1     2    6
3    1     3    7
4    2     1    4
5    2     2    6
6    2     3    5
7    3     1    6
8    3     2    7
9    3     3    6

期望的结果:

myList <- list()
myList[[1]]<- as.data.frame(matrix(c(1,1,1,1,2,3,5,6,7), nrow=3, ncol=3))
myList[[2]]<- as.data.frame(matrix(c(2,2,2,1,2,3,4,6,5), nrow=3, ncol=3))
myList[[3]]<- as.data.frame(matrix(c(3,3,3,1,2,3,6,7,6), nrow=3, ncol=3))

print(myList)
> print(myList)
[[1]]
  V1 V2 V3
1  1  1  5
2  1  2  6
3  1  3  7

[[2]]
  V1 V2 V3
1  2  1  4
2  2  2  6
3  2  3  5

[[3]]
  V1 V2 V3
1  3  1  6
2  3  2  7
3  3  3  6

标签: r

解决方案


可以使用

lapply(seq(1,9,3),function(x) df3[x:(x+2),])

[[1]]
  V1 V2
1  1  5
2  1  6
3  1  7

[[2]]
  V1 V2
4  2  4
5  2  6
6  2  5

[[3]]
  V1 V2
7  3  6
8  3  7
9  3  6

Somhow,你显示的数据和所包含的数据df3是不一样的。不过,这对两者都有效。


推荐阅读