C ++本征索引操作(相当于R tapply)

时间:2018-10-23 16:23:29

标签: c++ eigen

我对本征库有疑问。在根据定义值组的另一个向量(例如v)对这些元素进行分组时,我想计算向量(例如i)的元素的最小值(或总和)。

Eigen::vectorXd v(10); // values
v.setLinSpaced(10,1,10); // 1, 2, ...10
Eigen::vectorXi i(10); // labels
i << 1, 1, 1, 2, 2, 2, 3, 3, 3, 3; // 3 different groups with label 1, 2 or 3

我想进行按组或按索引的操作,即获取v中定义的i中值组的最小值:v中的最小值对应于i中等于1的条目的索引,与i中等于2的条目和i中等于3的条目相同。

Eigen::vectorXd m(3); // group-wise min (here I have 3 groups)
m = v.XXXX(i); // what I want: 1, 4, 7 given by function XXXX

换句话说,我正在寻找R中的tapply函数的等效项(https://stat.ethz.ch/R-manual/R-patched/library/base/html/tapply.html)。

我目前正在通过为v中的每个组提取i中的值来手动执行此操作。希望有另一种方式。

预先感谢

编辑: 如果有一种方法可以提取v中的值,其中i中的条目等于1(或2或3),那将是一个不错的开始。

0 个答案:

没有答案