我正在计算R
中矩阵的行上的排列图案,并且正在使用函数order
。排列模式为向量中的每个数字分配1到向量长度之间的一个数字,例如D
,其中1分配给最小值,2分配给大于最小值的下一个值,依此类推。您可以使用函数rank
来获取任何矢量的示例。我在下面显示我的代码
A_pasted<-t(apply(A,1, order)) #apply order function to rows in the matrix
Z_concat<-apply(A_pasted, 1,paste0, collapse="_") #turn values into characters to make comparison
例如
A =
[1,] 48 6 43 22
[2,] 47 15 27 20
[3,] 46 25 11 29
[4,] 21 46 22 32
[5,] 25 35 43 50
和
A_pasted=
[1,] 4 1 3 2
[2,] 4 1 3 2
[3,] 4 2 1 3
[4,] 1 4 2 3
[5,] 1 2 3 4
Z_concat
[1] "4_1_3_2" "4_1_3_2" "4_2_1_3" "1_4_2_3" "1_2_3_4"
其中A
是我要操作的矩阵。我的主要问题是,尽管代码的第一行每次迭代大约需要10秒钟,但我必须将其复制数十万次,因此我需要一个更快的代码来执行相同的操作。我还尝试过将parLapply
与先前转换为列表中元素的行一起使用,但这需要相同的时间。
还有其他方法可以进行此计算吗?
感谢您的帮助