【发布时间】:2016-07-21 00:08:30
【问题描述】:
我想将几列中每一列的所有值设置为NA。通常,如果我想使用相同的算法修改多个列,我会使用来自 dplyr 的mutate_each。从算法的角度来看,函数“x 映射到 null”似乎定义得很好,所以我尝试这样做。但是,我收到一个错误:Error in make_call(x$expr, args) : Unknown inputs。
最小可重现示例:
sample <- data.frame(a = seq(1, 3), b = seq(5, 7))
sample %>% mutate(a = 1, b = 1) # Works fine
sample %>% mutate_each(funs(. - 1), a, b) # Works fine
sample %>% mutate_each(funs(1), a, b) # Blows up
sample %>% mutate_each(funs(NA), a, b) # Blows up
我也尝试过明确定义一个函数,例如
mutate_each(funs(function(x) {NA}), Address, City, State, Zip)
这会导致另一个错误:Error: Unsupported type CLOSXP for column "a"。这样做的正确方法是什么?
【问题讨论】:
-
胶带:
sample %>% mutate_each(funs(.*0 + NA), a, b) -
@MichaelChirico 确实,这种解决方法也很好:
funs(.*0+1)和funs(.+NA)。注意:如果数据中有 NA,它不会将它们变成 NA(见我的帖子)