我想将几列中的所有值都设置为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"
。这样做的正确方法是什么?
答案 0 :(得分:5)
只是1
不是函数名(请参阅mutate_each的帮助页面)。你必须使用括号;这将有效:
sample %>% mutate_each(funs({1}), a, b)
#### a b
#### 1 1 1
#### 2 1 1
#### 3 1 1
sample %>% mutate_each(funs({NA}), a, b)
#### a b
#### 1 NA NA
#### 2 NA NA
#### 3 NA NA
这将把所有东西都变成NA或者。但是,如果您在data.frame中有NA并且您希望保持原样,那该怎么办?在这种情况下,@ MichaelCirico建议的解决方案(在评论中)有效。