r - 使用向量列表作为列索引按列拆分数据帧
问题描述
我有一个数据框V
> V
1 2 3 4 5 6 7 8 9 10
1 2.912543 2.570664 3.341646 3.225278 3.131639 3.052497 3.117737 3.429533 3.392248 2.847380
2 2.891564 2.698348 3.035995 2.898063 2.808887 2.850897 3.217016 2.826621 3.229053 2.698508
3 3.214684 2.644645 3.160234 2.923109 3.230461 2.961171 3.129343 3.024775 2.714332 3.324411
4 2.919603 3.023168 3.070867 2.994575 2.947305 2.964142 3.278173 3.131523 2.788786 3.239060
5 2.792197 3.316468 2.915747 3.155218 3.315128 2.759656 2.630333 3.232530 2.920433 3.016210
6 2.902794 3.294973 3.229803 3.351397 3.269347 2.609505 3.035035 2.919629 2.919356 2.649507
7 3.049518 3.107500 2.857238 3.331793 3.322184 2.904852 3.335267 3.215756 3.079802 3.102080
8 3.083056 3.281189 3.070641 2.848449 2.961288 2.683630 3.153762 3.119757 3.103300 3.189348
9 2.775359 3.057107 3.217315 3.388652 2.984062 3.395337 2.896535 3.284888 2.589920 2.882975
10 2.540940 2.844450 3.332348 2.767093 2.962410 2.957737 2.929318 3.080653 3.103251 3.315891
和一个向量列表ind
。向量的组合长度等于数据框中的列数。
> ind
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6 7 8
[[3]]
[1] 9 10
如何V
使用列表中的向量作为列索引将数据帧逐列拆分为多个数据帧,ind
以选择子数据帧并将它们输出到列表中。因此输出应如下所示:
[[1]]
1 2 3
1 2.912543 2.570664 3.341646
2 2.891564 2.698348 3.035995
3 3.214684 2.644645 3.160234
4 2.919603 3.023168 3.070867
5 2.792197 3.316468 2.915747
6 2.902794 3.294973 3.229803
7 3.049518 3.107500 2.857238
8 3.083056 3.281189 3.070641
9 2.775359 3.057107 3.217315
10 2.540940 2.844450 3.332348
[[2]]
4 5 6 7 8
1 3.225278 3.131639 3.052497 3.117737 3.429533
2 2.898063 2.808887 2.850897 3.217016 2.826621
3 2.923109 3.230461 2.961171 3.129343 3.024775
4 2.994575 2.947305 2.964142 3.278173 3.131523
5 3.155218 3.315128 2.759656 2.630333 3.232530
6 3.351397 3.269347 2.609505 3.035035 2.919629
7 3.331793 3.322184 2.904852 3.335267 3.215756
8 2.848449 2.961288 2.683630 3.153762 3.119757
9 3.388652 2.984062 3.395337 2.896535 3.284888
10 2.767093 2.962410 2.957737 2.929318 3.080653
[[3]]
9 10
1 3.392248 2.847380
2 3.229053 2.698508
3 2.714332 3.324411
4 2.788786 3.239060
5 2.920433 3.016210
6 2.919356 2.649507
7 3.079802 3.102080
8 3.103300 3.189348
9 2.589920 2.882975
10 3.103251 3.315891
解决方案
很简单
> lapply(ind, function(x) V[,x])
[[1]]
X1 X2 X3
1 2.912543 2.570664 3.341646
2 2.891564 2.698348 3.035995
3 3.214684 2.644645 3.160234
4 2.919603 3.023168 3.070867
5 2.792197 3.316468 2.915747
6 2.902794 3.294973 3.229803
7 3.049518 3.107500 2.857238
8 3.083056 3.281189 3.070641
9 2.775359 3.057107 3.217315
10 2.540940 2.844450 3.332348
[[2]]
X4 X5 X6 X7 X8
1 3.225278 3.131639 3.052497 3.117737 3.429533
2 2.898063 2.808887 2.850897 3.217016 2.826621
3 2.923109 3.230461 2.961171 3.129343 3.024775
4 2.994575 2.947305 2.964142 3.278173 3.131523
5 3.155218 3.315128 2.759656 2.630333 3.232530
6 3.351397 3.269347 2.609505 3.035035 2.919629
7 3.331793 3.322184 2.904852 3.335267 3.215756
8 2.848449 2.961288 2.683630 3.153762 3.119757
9 3.388652 2.984062 3.395337 2.896535 3.284888
10 2.767093 2.962410 2.957737 2.929318 3.080653
[[3]]
X9 X10
1 3.392248 2.847380
2 3.229053 2.698508
3 2.714332 3.324411
4 2.788786 3.239060
5 2.920433 3.016210
6 2.919356 2.649507
7 3.079802 3.102080
8 3.103300 3.189348
9 2.589920 2.882975
10 3.103251 3.315891
推荐阅读
- r - 错误:无效的分组因子规范,主题
- c++ - 组织复杂的地图数据结构
- python - 将时间格式,字符串转换为浮点数
- r - 错误:`data` 和 `reference` 应该是相同级别的因素。使用confusionMatrix(插入符号)
- paypal - PayPal 支付 API 限制?
- jestjs - Next.js 单元测试与 jest --coverage 错误
- wordpress - 在每个 WooCommerce 产品上添加品牌徽标?
- phpstorm - PhpStorm:加载 xebug.so 失败
- c - 程序运行不佳(意味着输出(printf)),但在 gdb t.exe 中运行良好
- python - 如何限制字典中的值范围?