是否有R功能用于交叉?
我想要两台计算机的功能,两个字符串的1交叉 输入是两个长度相同的二进制字符串,输出是1-交叉 例如,交叉的输出(111001000) 101001100 111010000 或者我可以自己编写这个函数,但是在R中是否有任何字符串拆分或sting聚集函数可以使用是否有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,
谢谢 这是一个效率极低的实现:
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
不起作用?