考虑这个数据框:
df <- data.frame(
id=c(1,2,3,2,2,1,1,4,5,3),
value=c("d1","d2","d3","d2","d2","d1","d1","d4","d5","d3"))
这个功能:
f_dummy <- function(df){
dt<-data.table(df)
dt[, `:=` (value = ifelse(duplicated(value), NA, value)), by = id]
return(dt)
}
通过调用f_dummy(df)
,为什么函数不返回任何内容?如果您在全局环境中运行代码(在函数内部),dt
具有正确的值。
dt<-data.table(df)
dt[, `:=` (value = ifelse(duplicated(value), NA, value)), by = id]
输出
# dt
# id value
# 1: 1 d1
# 2: 2 d2
# 3: 3 d3
# 4: 2 NA
# 5: 2 NA
# 6: 1 NA
# 7: 1 NA
# 8: 4 d4
# 9: 5 d5
# 10: 3 NA