将数据帧拆分为更小的块

roa*_*dom 2 split r dataframe

假设我有以下内容 data.frame

> df <- data.frame(a=rep(1:3),b=rep(1:3),c=rep(4:6),d=rep(4:6))
> df
  a b c d
1 1 1 4 4
2 2 2 5 5
3 3 3 6 6
Run Code Online (Sandbox Code Playgroud)

我希望能够将其拆分df为两个框架df1df2. 我想df1是的前两列dfdf2是的两列df。有没有办法在代码中做到这一点,这样我就不必手动执行以下操作:

> df1 <- df[,1:2]
> df1
  a b
1 1 1
2 2 2
3 3 3
> df2 <- df[,3:4]
> df2
  c d
1 4 4
2 5 5
3 6 6
Run Code Online (Sandbox Code Playgroud)

这会很好,因为我正在处理的问题有可变数量的列,我只想能够创建n = ncol(df)/2数据框。因此,如果有在上面的例子中2个列,df3df[,5:6]

谢谢!

Col*_*vel 6

假设您data.frame有一对数量的列,这是一个非常短的代码:

>lapply(seq(1,length(df),2), function(u) df[u:(u+1)])
[[1]]
  a b
1 1 1
2 2 2
3 3 3

[[2]]
  c d
1 4 4
2 5 5
3 6 6
Run Code Online (Sandbox Code Playgroud)