R中的组合与置换 我有一个非常大的数据帧,但是为了这个问题,让我们考虑一下它的子集;
R中的组合与置换 我有一个非常大的数据帧,但是为了这个问题,让我们考虑一下它的子集;,r,R,i j k l m n o p q 1 1 1 1 1 1 3 4 4 1 1 1 1 1 1 4 3 4 1 1 1 1 1 1 4 4 3 1 1 1 1 1 2 2 4 4 1 1 1 1 1 2 3 3 4 1 1 1 1 1 2 3 4 3 在上述数据帧中,行中的值可以以特定数量的方式排列;例如,让我们考虑第一行,即(1,1,1,1,1,3,4,4)。我们将非常感谢任何能够在R中计算出这些方法的帮助 您可以使用以下公式计算每行的唯一排列数: apply(dat, 1, functio
i j k l m n o p q
1 1 1 1 1 1 3 4 4
1 1 1 1 1 1 4 3 4
1 1 1 1 1 1 4 4 3
1 1 1 1 1 2 2 4 4
1 1 1 1 1 2 3 3 4
1 1 1 1 1 2 3 4 3
在上述数据帧中,行中的值可以以特定数量的方式排列;例如,让我们考虑第一行,即(1,1,1,1,1,3,4,4)。我们将非常感谢任何能够在R中计算出这些方法的帮助 您可以使用以下公式计算每行的唯一排列数:
apply(dat, 1, function(x) factorial(length(x)) / prod(factorial(table(x))))
# [1] 252 252 252 756 1512 1512
如果一行长度n的所有元素都是唯一的,那么就有n!(n阶乘)置换。但是,如果每个j唯一元素的总拷贝数为k1,k2,…,kj,那么我们可以通过除以k1!*k2!*…*kj!。还有更多关于多项式系数的细节
如果两行具有相同的元素(可能顺序不同),那么它们的所有排列也将相同。我们可以通过检查重复的有序行来考虑这一点:
apply(dat, 1, function(x) factorial(length(x)) / prod(factorial(table(x)))) *
!duplicated(t(apply(dat, 1, sort)))
# [1] 252 0 0 756 1512 0
您可以使用以下公式计算每行的唯一排列数:
apply(dat, 1, function(x) factorial(length(x)) / prod(factorial(table(x))))
# [1] 252 252 252 756 1512 1512
如果一行长度n的所有元素都是唯一的,那么就有n!(n阶乘)置换。但是,如果每个j唯一元素的总拷贝数为k1,k2,…,kj,那么我们可以通过除以k1!*k2!*…*kj!。还有更多关于多项式系数的细节
如果两行具有相同的元素(可能顺序不同),那么它们的所有排列也将相同。我们可以通过检查重复的有序行来考虑这一点:
apply(dat, 1, function(x) factorial(length(x)) / prod(factorial(table(x)))) *
!duplicated(t(apply(dat, 1, sort)))
# [1] 252 0 0 756 1512 0