覆盖R

时间:2017-08-01 03:06:34

标签: r algorithm if-statement genetic

我对R非常陌生并且很难得到答案,所以我终于屈服于发布 - 所以提前道歉。

我正在使用遗传算法来优化对象的形状,并希望收集用于原型设计的中间步骤。我正在使用genalg的软件包,允许监视器功能跟踪我可以打印的数据。但是我想把它存放在数据框中用于其他用途,并继续观察它覆盖其他迭代。这是我的监视器功能代码:

    monitor <- function(obj){

    #Make empty data frame in which to store data
    resultlist <- data.frame(matrix(nrow = 200, ncol = 10, byrow = TRUE))

    #If statement evaluating each iteration of algorithm
    if (obj$iter > 0){

    #Put results into list corresponding to number of iteration
    resultlist[,obj$iter] <- obj$population[which.min(obj$best),]}

    #Make data frame available at global level for prototyping, output, etc.
    resultlistOutput <<- resultlist}

我知道这可以在for循环中运行,没有基于搜索的问题,所以我必须做错了或if语法不能用吗?

真诚地感谢您的时间。

1 个答案:

答案 0 :(得分:1)

不确定你得到了什么错误,我猜你只得到了上一次迭代的结果。发生这种情况是因为您在每次调用app.run()函数时都覆盖了全局数据帧。您应该首先以这种方式初始化monitor然后执行此操作:

resultlistOutput <<- data.frame()