尝试在矩阵行中应用顺序函数时的时间优化

时间:2018-08-18 05:16:59

标签: r optimization

我正在计算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与先前转换为列表中元素的行一起使用,但这需要相同的时间。

还有其他方法可以进行此计算吗?

感谢您的帮助

0 个答案:

没有答案