循环不改变数据帧中的值 - R.

时间:2015-12-07 11:22:09

标签: r loops dataframe

我有一个工作正常的循环,但输出只在控制台中返回,数据框仍未修改。

  • 循环结束,在控制台中返回head(data),在预期列中生成预期值
  • 但是,原始数据框中没有更改,我想要显示值(打印头(数据)现在给我原始值,而不是循环创建的新值)

示例代码:

df <- cbind(x,y)
myfun <- function(z){
    counter <- 0
    for (i in 1:z) {
    counter <- 1 + counter
        for (j in 1:5) {
        counter <- 1 + counter
            if (condition_a){
                df[counter,2] <- 0
            }
            if (condition_b){
                df[counter,2] <- 1
            }
        }
    }
    return(head(df))
    newdf <- df[,2]
}

我错过了什么?

值是int类,这是否重要?

1 个答案:

答案 0 :(得分:0)

如果你真的想要更改某个功能之外的内容,那么你可以使用ABCTreeWalker来改变你职能之外df[counter,2] <<- 1的值。

但是,这并不是很好的做法,因为每次运行该功能时,最终都会对df数据框进行更改。而是看看返回值。此外,您可以执行一些简化而不是循环来使代码运行得更快。我附上了一个例子,告诉你如何做你想做的事。

df