【发布时间】:2021-03-26 09:58:31
【问题描述】:
我有一个名为 dat 的数据框,如下所示:
id1 id2 value
1 3 0 8.00019752415226
2 4 0 27.4861843945884
3 0 3 8.00019752415226
4 4 3 20.1582815171649
5 0 4 27.4861843945884
6 3 4 20.1582815171649
7 1 2 0
8 2 1 0
id1和id2可以取0到4的值,是被试的id号,是每个被试之间的欧式距离。
现在我有一个矩阵,我通过一次取 2 个 id 变量(基本上是 c(0,1,2,3,4))的唯一元素的所有可能组合得到:
combn(dat$id,2)
给出输出:
> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
> [1,] 0 0 0 0 1 1 1 2 2 3
> [2,] 1 2 3 4 2 3 4 3 4 4
现在我想根据该矩阵的每一列选择dat 中的行,即选择具有 (id1 = 0, id2 = 1); 的行(id1=0,id2=2); (id1 = 0, id2 = 3) 等等,然后用它们制作一个数据框。
现在我可以使用for 循环轻松实现这一点,但我想知道是否有更快更优雅的方式来使用矢量化函数来实现这一点。提前致谢!
【问题讨论】:
标签: r filter subset combinations