我对本征库有疑问。在根据定义值组的另一个向量(例如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),那将是一个不错的开始。