首页 > 解决方案 > 引用函数内重复循环内的变量

问题描述

我正在使用重复循环通过向每个重复值添加 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)

这可能是微不足道的,但我希望得到解释。

标签: r

解决方案


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


推荐阅读