在函数的重复循环中引用变量

时间:2018-07-11 13:44:37

标签: r

我正在使用重复循环,通过向每个重复值加1来删除数据帧中的重复项。像这样:

library(Biobase)
    c <- data.frame(col_a = c(1,2,3,3,3,3,4), other_col = c(4,1,2,3,3,3,3))
        repeat{
          c$col_a[duplicated(c$col_a)] <- c$col_a[duplicated(c$col_a)] + 1
          if (length(c$col_a[!isUnique(c$col_a)]) == 0) break
        }

我想知道为什么这个函数(列名是变量)为什么不起作用:

   library(Biobase)
    f <- function(a){
          c <- data.frame(col_a = c(1,2,3,3,3,3,4), other_col = c(4,1,2,3,3,3,3))
          repeat{
          c$a[duplicated(c$a)] <- c$a[duplicated(c$a)] + 1
          if (length(c$a[!isUnique(c$a)]) == 0) break
          }
          return(c)
        }
        my_output <- f(col_a)

这可能有些琐碎,但我希望得到一个解释。

1 个答案:

答案 0 :(得分:0)

问题是您的语法错误:c$a表示列"a",而不是名称在变量a中的列。要获取后者,请使用c[[a]]c[, a]