【发布时间】:2016-02-26 04:36:29
【问题描述】:
问题:
我在 R 中使用循环从两个(“父”)向量创建一个新向量,为新向量中的每个位置生成一个随机值,该值在父级在该位置的值范围内(用于genetic algorithm 中的交叉阶段)。请注意,我不想要 x 和 y 的平均值,而是在各个位置的值范围内的随机值。
示例代码:
x = c(0.1, 0.7, 1, 0.8)
y = c(0, 0.9, 0.2, 1)
child = rep(NA, length(x))
for(i in 1:length(x)){
child[i] = sample(seq(min(x[i], y[i]),
max(x[i],y[i]), by=0.01), 1)
}
# This might yield, for example: 0.02 0.83 0.73 0.88
问题:
它工作得很好,但我想也许有一种更有效的方法来做到这一点(因为我需要在数千次迭代中为 100-1000 个人执行此操作)。
在 R 中,有很好的快速函数,如 ifelse、colMeans、max.col、match、rollmean 等,它们适用于向量,所以我想知道,有没有类似的东西适合我的目的也是? (据我所知,apply 帮派可能在这里帮不上什么忙)。或者这样的循环真的是我能做的最好的吗?
【问题讨论】:
标签: r loops vector vectorization genetic-algorithm