我正在使用重复循环,通过向每个重复值加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)
这可能有些琐碎,但我希望得到一个解释。
答案 0 :(得分:0)
问题是您的语法错误:c$a
表示列"a"
,而不是名称在变量a
中的列。要获取后者,请使用c[[a]]
或c[, a]
。