r - 如何通过系统地重新排列现有 data.frames 列表中的列来创建新的 data.frames 列表
问题描述
我有一个大约 100 个数据框的列表。我想创建一个新的数据框列表,其中第一个数据框由所有现有数据框的第一列组成,第二个数据框由第二列组成,等等......
请参阅下面的代码以获取我想要做的示例。
a <- c(0, 0, 1, 1, 1)
b <- c(0, 1, 0, 0, 1)
c <- c(1, 1, 0, 0, 1)
df1 <- data.frame(a, b, c)
df2 <- data.frame(c, b, a)
df3 <- data.frame(b, a, c)
my_lst <- list(df1, df2, df3)
new_df1 <- data.frame(df1[,1], df2[,1], df3[,1])
new_df2 <- data.frame(df1[,2], df2[,2], df3[,2])
new_df3 <- data.frame(df1[,3], df2[,3], df3[,3])
new_lst <- list(new_df1, new_df2, new_df3)
对于包含大型数据框的大型列表,是否有更紧凑的方法?提前致谢。
解决方案
这是一个选项:
cols <- ncol(my_lst[[1]])
lapply(1:cols, function(x) do.call(cbind, lapply(my_lst, `[`, x)))
[[1]]
a c b
1 0 1 0
2 0 1 1
3 1 0 0
4 1 0 0
5 1 1 1
[[2]]
b b a
1 0 0 0
2 1 1 0
3 0 0 1
4 0 0 1
5 1 1 1
[[3]]
c a c
1 1 0 1
2 1 0 1
3 0 1 0
4 0 1 0
5 1 1 1
推荐阅读
- docker - Docker 和 Windows - 连接尝试失败,因为连接方在一段时间后没有正确响应
- ruby - 如何遍历 Ruby 中数组的每个第二个元素?
- python-3.x - 根据条件Pandas Python提取行
- python - 获取每个硬盘分区的名称和大小
- jenkins - Jenkins Jenkinsfile Groovy bash 命令没有这样的文件或目录
- c - 读取一个矩阵,输出第i行之和等于第j列的所有 (i, j)对
- spring-boot - Spring Cloud Sleuth 如何在开箱即用的 Webflux 中传播 MDC 上下文,以便其内容可以记录在不同的线程中?
- java - Spring boot MockMVC post空指针异常
- python - 如何按记录在以下数据集中对源 IP 地址进行聚类
- view - Rebol2/View 问题:Rebol2 中的布局功能是如何工作的?