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)
这可能是微不足道的,但我希望得到解释。
解决方案
问题是您的语法错误: c$a
表示 column "a"
,而不是名称在 variable 中的列a
。要获得后者,请使用c[[a]]
or c[, a]
。
推荐阅读
- data-structures - 求 T(n) = floor(n^(1/3)) + 2*T(floor(n/8)) 的时间复杂度
- javascript - UnhandledPromiseRejectionWarning:ReferenceError:未定义执行
- python - 如何旋转正方形
- python - pandas read_excel 函数太慢了
- vue.js - 在创建的组件中调用文件读取器 onload 中的 vuex 突变不会改变状态
- python-3.x - 在 Python 中监控 Twint 进度
- python - Luhn算法id号
- docker - 无法轻松重新连接由“容器卷中的克隆存储库”创建的容器?
- regex - Perl:如何在单个字符串中查找和修改多个表达式
- c - 具有最大增加子序列的盒子堆叠问题