Смущающий аргумент .funs для mutate_all в dplyr - PullRequest
1 голос
/ 23 октября 2019

Я не понимаю аргумент .funs для mutate_all () в пакете dplyr. По всей вероятности, проблема со мной, но я бы хотел понять, чего мне не хватает.

Мне часто приходится перекодировать несколько переменных, например, наборы элементов likert.

Пример кода ниже повторяет проблему, с которой я часто сталкиваюсь, и мое собственное решение, но для меня мое решение не похоже на справочную документацию. Так чего мне не хватает?

#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")))

1 Ответ

0 голосов
/ 23 октября 2019

В последней версии 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...