我正在尝试编写一个函数,该函数接受一个数据帧并将其分成多个数据帧,每指定数目的列。例如,如果一个数据框看起来像这样:
df <- data.frame(
x1 = rnorm(1000),
x2 = rnorm(1000),
x3 = rnorm(1000),
x4 = rnorm(1000),
x5 = rnorm(1000),
x6 = rnorm(1000)
)
例如,我想每隔一列对其进行拆分,并将其保存为自己的数据框。所以伪代码看起来像:
function(df){
split df every second column
save each group as it's own unique data frame (named A-C for this example)
}
最终结果将意味着我有3个数据帧,其中数据帧A有两列(即x1,x2),类似地B有两列(x3,x4),C有两列(x5,x6)。
关于如何实现此目标的任何建议?
我们可以使用split.default
split.default(df, gl(ncol(df)/2, 2))
我们可以使用split.default
分成两列,每列分为list
lst1 <- split.default(df, LETTERS[as.integer(gl(ncol(df), 2, ncol(df)))])
然后使用write.csv
保存数据集>
lapply(names(lst1), function(x) write.csv(lst[[x]], paste0(x, ".csv")))