r - 在 dplyr 中混淆 mutate_all 的 .funs 参数
问题描述
我不理解 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")))
解决方案
在最近的版本中dplyr
,list
代替funs
ie 换行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
推荐阅读
- chef-infra - Berks:无法满足对 package 的约束,该约束不存在,
- c# - RabbitMQ - 您如何以编程方式从消息队列接收消息?
- c# - WPF 在主线程之外创建和保存内联文本
- node.js - 使用 monorepo 时如何让 Heroku CI 运行测试?
- php - Laravel 错误地将日期时间存储到 jpbs 和队列上的数据库中
- php - 我可以使用定制的 php DB 类来简化 PDO 方法的过程吗?
- asp.net-identity - ASP.Net Identity 和 IdentityServer4 声明
- python - 如果属性不存在,如何将属性插入到文档中?
- polymer - 聚合物捆绑器不输出带有自定义捆绑包的 node_modules 文件夹
- excel - .Find方法不按顺序搜索