这里是我的数据帧:如何使用combn和数据框的结果来获得新的martix?
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 3 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 4 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 5 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 6 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 7 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 8 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 9 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 10 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 11 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 12 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 13 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 14 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 15 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 16 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1
首先,我用combn(4:15, 3)
计算组合。
像这样:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] .... [,220] [1,] 4 4 4 4 4 4 4 4 4 4 4 4 4 .... 13 [2,] 5 5 5 5 5 5 5 5 5 5 6 6 6 .... 14 [3,] 6 7 8 9 10 11 12 13 14 15 7 8 9 .... 15
我的问题是:如何使用的combn(4:15, 3)
和我的数据集得到了很多矩阵的结果呢? (在这种情况下,我需要220个矩阵,因为有220个组合)
在第一个组合,例如, 拳头组合是:
[,1]
[1,] 4
[2,] 5
[3,] 6
所以我走第4栏第5栏和列6从我的数据帧得到这样一个新的矩阵:
V4 V5 V6
1 1 1 1
2 1 1 1
3 1 -1 -1
4 1 -1 -1
5 -1 1 1
6 -1 1 1
7 -1 -1 -1
8 -1 -1 -1
9 -1 1 -1
10 -1 1 -1
11 -1 -1 1
12 -1 -1 1
13 1 1 -1
14 1 1 -1
15 1 -1 1
16 1 -1 1
没有人有一些简单的代码片段做到这一点?感谢大家的帮助!
只是为了澄清,你想获取所有的220'data.frame'子集并存储在一个变量(如Ananda的解决方案)吗?或者你不知道如何索引,你需要*不*要同时加载所有'data.frame'子集? – Arun 2013-04-21 17:36:16
@Arun +1,了解这一点很重要。 – Nishanth 2013-04-22 02:34:39
@Arun 我不确定哪种方法更适合我想要在下一步中实现的目标。 在下一步中,我想为220个子集中的每一个添加一个固定列,以创建一组新的子集(集合A)。然后我想要使用combn(4,2)的模式乘以每个子集(集合A)中的列,然后combn(4,3),然后combn(4,4)。然后用结果创建另一组子集(集合B),包括原始的4列。 – Stacy 2013-04-22 10:06:37