如何在列之间划分数据帧,例如在第n列?

Arn*_*vvy 5 split r dataframe

假设我正在使用以下数据框:

Mydata <- data.frame(X1 = c(1,2,3,4,5,6,7,8,9,10),X2 = c(1,3,1,1,1,5,1,1,8,1),
                     X3 = c(1,2,3,4,5,6,7,8,9,10),X4 = c(1,3,1,1,1,5,1,1,8,1),
                     X5 = c(1,2,3,4,5,6,7,8,9,10),X6 = c(1,3,1,1,1,5,1,1,8,1),
                     X7 = c(1,2,3,4,5,6,7,8,9,10),X8 = c(1,3,1,1,1,5,1,1,8,1),
                     X9 = c(1,2,3,4,5,6,7,8,9,10),X10 = c(1,3,1,1,1,5,1,1,8,1),
                     X11 = c(1,2,3,4,5,6,7,8,9,10),X12 = c(1,3,1,1,1,5,1,1,8,1))
Run Code Online (Sandbox Code Playgroud)

我想将此数据帧分为三个单独的数据帧,一个数据帧中的列X1〜X4,第二个数据帧中的X5〜X8,以及X9〜X12。我将如何编写代码以继续此模式以用于任意数量的列?

李哲源*_*李哲源 6

Mydata每4列拆分一次。我们可以显式使用split.default

split.default(Mydata, rep(1:3, each = 4))
Run Code Online (Sandbox Code Playgroud)

“默认”方法可以按列拆分数据帧。只需根据需要设置分组变量。


对于平衡分组,gl非常方便(请参阅参考资料?gl)。我们可以在上面使用gl(3, 4)来代替rep(1:3, 4),这样可以避免类型从“整数”转换为“因子”。

通常,gl(ncol(Mydata) / n, n)用于“每n列”(n必须除法ncol(Mydata))。