带有dplyr-mutate列的用户定义函数是一个参数
我想用R中的dplyr创建一个已定义的函数,但我坚持在mutate函数中传递参数。我有两个数据集 数据1: 团体 AGEGRP 计数 1. 0 15 2. 1. 20带有dplyr-mutate列的用户定义函数是一个参数,r,dplyr,user-defined-functions,mutate,R,Dplyr,User Defined Functions,Mutate,我想用R中的dplyr创建一个已定义的函数,但我坚持在mutate函数中传递参数。我有两个数据集 数据1: 团体 AGEGRP 计数 1. 0 15 2. 1. 20 这不是你真正需要的吗: freqcnt <- function(var) { var <- as.character(substitute(var)) data2[,var] <- 99 return( rbind( data1, data2 ) )
这不是你真正需要的吗:
freqcnt <- function(var) {
var <- as.character(substitute(var))
data2[,var] <- 99
return( rbind( data1, data2 ) )
}
freqcnt这里是对函数的修复
library(dplyr)
freqcnt <- function(var){
data2 <- data2 %>%
mutate({{var}} := 99)
data1 <- data1 %>%
rbind(data2)
return(data1)
}
freqcnt("AGEGRP")
# GROUP AGEGRP COUNT
# 1 1 0 15
# 2 2 1 20
# 3 3 99 15
数据
data1 <- data.frame(GROUP = 1:2,
AGEGRP = 0:1,
COUNT = c(15,20))
data2 <- data.frame(GROUP = 3, COUNT = 15)
data1无法真正测试它,但我认为在等式左侧使用准引号时,需要使用walrus运算符“:=”,而不是=
。看,谢谢,它很管用。我能问一下为什么我们需要两个{}和:=这里吗?我实际上也在函数中执行一些数据操作,如左连接和分组方式。如果我使用enquo和!!,我可以成功地将参数作为%>%中的列传递。然后我使用您的脚本mutate({var}}:=99),它生成我想要的正确结果!!谢谢你的来信。因为我也做其他的计算和操作,我将看到变异部分如何更好地适应我的函数@Jemc36查看此内容以了解我们为什么使用{{
:
data1 <- data.frame(GROUP = 1:2,
AGEGRP = 0:1,
COUNT = c(15,20))
data2 <- data.frame(GROUP = 3, COUNT = 15)