我不了解dplyr软件包中mutate_all()的.funs参数。问题很可能出在我身上,但我想了解我所缺少的。
我经常不得不重新编码多个变量,例如李克特项目集。
下面的示例代码复制了我经常遇到的问题以及我自己的解决方案,但是对我来说,我的解决方案看起来并不像帮助文档一样。那我想念什么呢?
#Data
var1<-sample(c('A', 'B', 'C'), 100, replace=T)
var2<-sample(c('A', 'B', 'C'), 100, replace=T)
dat<-data.frame(var1, var2)
library(tidyverse)
library(car)
#As per help documentation
dat %>%
mutate_all(., .funs(Recode(., "'A'=1"))) # This doesn't work, generates an error
#this works but the help documentation does not get you there in anyway, unless I am missing
something.
dat %>%
mutate_all(., funs(Recode(., "'A'=1")))
答案 0 :(得分:0)
在最新版本的dplyr
中,list
代替了funs
,即用list
代替了funs
library(dplyr) #v 0.8.3
library(car)
所以,要么
dat %>%
mutate_all(.funs = ~Recode(., "'A' = 1")) %>%
head(5)
# var1 var2
#1 B C
#2 B C
#3 B C
#4 B 1
#5 C C
或
dat %>%
mutate_all(~ Recode(., "'A' = 1")) %>%
head(5)
# var1 var2
#1 B C
#2 B C
#3 B C
#4 B 1
#5 C C
甚至没有匿名函数调用
dat %>%
mutate_all(Recode, "'A' = 1") %>%
head(5)
# var1 var2
#1 B C
#2 B C
#3 B C
#4 B 1
#5 C C