用r中的特定跳过模式重新排列向量
我的排列结果如下用r中的特定跳过模式重新排列向量,r,permutation,R,Permutation,我的排列结果如下 abc <- gtools::permutations(4,3,repeats.allowed = T) abc这是高度手动的,因此不确定您是否正在寻找更自动化的分拣方法: abc[,2] <- rep(rep(1:4, each = 2), length.out = nrow(abc)) abc[,3] <- rep(c(rep(1:2, 2), rep(3:4, 2)), length.out = nrow(abc)) 你是对的,我想用一种自动化的方式
abc <- gtools::permutations(4,3,repeats.allowed = T)
abc这是高度手动的,因此不确定您是否正在寻找更自动化的分拣方法:
abc[,2] <- rep(rep(1:4, each = 2), length.out = nrow(abc))
abc[,3] <- rep(c(rep(1:2, 2), rep(3:4, 2)), length.out = nrow(abc))
你是对的,我想用一种自动化的方式来看待它。因为在我所做的工作中,我想将这个想法扩展到像abc这样的东西,如果你看一下,关于如何扩展每个新元素的模式是很清楚的。最复杂的是将它扩展到各个列,因为这样你也会有abc[,4]等等。你到底想实现什么?为什么需要这种排序模式?也许有一种完全不同的方法可以得到你想要的结果。我正在做的唯一一件事就是在gtools::permutations中n
发生变化(n=9,r=3,repeats.allowed=T)
但是r
总是3。换句话说,n
可以是4或9或其他值,但r将始终是3。因此,abc[,4]是不可能的。我所需要的是一种安排,就像上面的输出一样。我想使用expand.grid()
,但它不会对其进行相应的排序。例如,如果我对expand.grid(c(1,2,3,4),c(1,2,3,4),c(1,2,3,4))
进行排序,以获得上面的abc
结果,那么这就行了。问题是为什么需要这种排列模式?你想做什么样的分析?为什么有这种特定的排序模式很重要?我怀疑这是否必要,还因为当你做排列时,每个组合会有两次,我猜你不想为每个模式运行你的东西几次。
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 2
[3,] 1 2 1
[4,] 1 2 2
[5,] 1 3 3
[6,] 1 3 4
[7,] 1 4 3
[8,] 1 4 4
[9,] 1 1 1
[10,] 1 1 2
[11,] 1 2 1
[12,] 1 2 2
[13,] 1 3 3
[14,] 1 3 4
[15,] 1 4 3
[16,] 1 4 4
[17,] 2 1 1
[18,] 2 1 2
[19,] 2 2 1
[20,] 2 2 2
[21,] 2 3 3
[22,] 2 3 4
[23,] 2 4 3
[24,] 2 4 4
[25,] 2 1 1
[26,] 2 1 2
[27,] 2 2 1
[28,] 2 2 2
[29,] 2 3 3
[30,] 2 3 4
[31,] 2 4 3
[32,] 2 4 4
[33,] 3 1 1
[34,] 3 1 2
[35,] 3 2 1
[36,] 3 2 2
[37,] 3 3 3
[38,] 3 3 4
[39,] 3 4 3
[40,] 3 4 4
[41,] 3 1 1
[42,] 3 1 2
[43,] 3 2 1
[44,] 3 2 2
[45,] 3 3 3
[46,] 3 3 4
[47,] 3 4 3
[48,] 3 4 4
[49,] 4 1 1
[50,] 4 1 2
[51,] 4 2 1
[52,] 4 2 2
[53,] 4 3 3
[54,] 4 3 4
[55,] 4 4 3
[56,] 4 4 4
[57,] 4 1 1
[58,] 4 1 2
[59,] 4 2 1
[60,] 4 2 2
[61,] 4 3 3
[62,] 4 3 4
[63,] 4 4 3
[64,] 4 4 4