是否有R功能用于交叉?

是否有R功能用于交叉?,r,R,我想要两台计算机的功能,两个字符串的1交叉 输入是两个长度相同的二进制字符串,输出是1-交叉 例如,交叉的输出(111001000) 101001100 111010000 或者我可以自己编写这个函数,但是在R中是否有任何字符串拆分或sting聚集函数可以使用 谢谢 这是一个效率极低的实现: crossover=function(A,B){ require(e1071) b = bincombinations(length(A)) t(unique(apply(b, 1,

我想要两台计算机的功能,两个字符串的1交叉

输入是两个长度相同的二进制字符串,输出是1-交叉

例如,交叉的输出(111001000)

101001100 111010000

或者我可以自己编写这个函数,但是在R中是否有任何字符串拆分或sting聚集函数可以使用


谢谢

这是一个效率极低的实现:

crossover=function(A,B){
    require(e1071)
    b = bincombinations(length(A))
    t(unique(apply(b, 1, function(r){r*A+(1-r)*B}),MARGIN=2))    
}
其参数是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的所有组合,然后只取唯一的组合。肯定有更好的办法


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

你能解释一下你是如何从输入中导出输出的吗?(换句话说,定义1-crossion。)你也应该引用你的二进制字符串:
crossion(“11100”,“10000”)
否则它们是十进制数。我猜这是某种遗传学的东西?你想要所有独特的模式,其中
C_i
A_i
还是
B_i
?难道
combn
不起作用?