Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有dplyr-mutate列的用户定义函数是一个参数_R_Dplyr_User Defined Functions_Mutate - Fatal编程技术网

带有dplyr-mutate列的用户定义函数是一个参数

带有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 ) )

我想用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这里是对函数的修复

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)