交叉有R功能吗?

时间:2014-09-24 15:51:36

标签: r

我希望功能两台计算机的双交叉1-crossover。

输入是两个二进制字符串,长度相同,输出是1-crossover。

例如,交叉输出(11100,10000)

10100,11000 11100,10000

或者我可以自己编写函数,但是在R中是否有任何字符串拆分或sting Congregation函数?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个愚蠢的低效实施:

crossover=function(A,B){
    require(e1071)
    b = bincombinations(length(A))
    t(unique(apply(b, 1, function(r){r*A+(1-r)*B}),MARGIN=2))    
}

它的args是1和0的向量,它的返回是一个交叉矩阵:

> crossover(c(1,1,1,0,0),c(1,0,0,0,0))
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    1    0    1    0    0
[3,]    1    1    0    0    0
[4,]    1    1    1    0    0

低效率来自于它计算A与B的所有组合,然后仅采用唯一的组合。必然会有更好的方式。

如果您真的想要处理字符串,那么您可以自己找到字符串拆分和粘贴答案。