R 有没有办法将列名指定为参数?
假设我想创建一个复制所选列的函数,作为示例R 有没有办法将列名指定为参数?,r,function,arguments,R,Function,Arguments,假设我想创建一个复制所选列的函数,作为示例 testdata <- data.frame( "diff1" = c(seq(1:10)), "diff2" = c(seq(21:30)) ) goal <- testdata %>% mutate(newdiff1 = diff1) 这种格式有效 nondesiredformat <- funtest(testdata,testdata$diff1,newdiff1) nondesiredformat在函
testdata <- data.frame(
"diff1" = c(seq(1:10)),
"diff2" = c(seq(21:30))
)
goal <- testdata %>%
mutate(newdiff1 = diff1)
这种格式有效
nondesiredformat <- funtest(testdata,testdata$diff1,newdiff1)
nondesiredformat在函数中,我们可以使用{{}
进行评估,即
+enquo
对于传递到函数中的无引号变量名和赋值,请使用:=
而不是=
funtest <- function(dat,var,newvar){
dat %>%
mutate({{newvar}} := {{var}})
}
funtest(testdata, diff1, newdiff1)
# diff1 diff2 newdiff1
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 9
#10 10 10 10
funtest%
突变({newvar}}:={{{var}})
}
funtest(testdata、diff1、newdiff1)
#diff1 diff2 newdiff1
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 9
#10 10 10 10
在函数中,我们可以使用{{}
进行评估,即
+enquo
对于传递到函数中的无引号变量名和赋值,请使用:=
而不是=
funtest <- function(dat,var,newvar){
dat %>%
mutate({{newvar}} := {{var}})
}
funtest(testdata, diff1, newdiff1)
# diff1 diff2 newdiff1
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 9
#10 10 10 10
funtest%
突变({newvar}}:={{{var}})
}
funtest(testdata、diff1、newdiff1)
#diff1 diff2 newdiff1
#1 1 1 1
#2 2 2 2
#3 3 3 3
#4 4 4 4
#5 5 5 5
#6 6 6 6
#7 7 7 7
#8 8 8 8
#9 9 9 9
#10 10 10 10
您可以使用bquote进行以下操作:
eval(bquote(
dat %>%
mutate(.(newvar) := .(var))
))
你也可以在你的特殊情况下更新旧学校
dat[[newvar]] = dat[[var]]
您可以使用bquote进行以下操作:
eval(bquote(
dat %>%
mutate(.(newvar) := .(var))
))
你也可以在你的特殊情况下更新旧学校
dat[[newvar]] = dat[[var]]
如果您开始使用带有参数的变量名编写函数,您可能会发现data.table
比dplyr
更方便。我最近写了一篇文章。在我看来,标准评估更容易处理数据。表
比dplyr
更容易处理
使用data.table
,您有几种方法将列名用作参数
使用get
您可以使用get
将名称与特定范围内的值进行映射。这里的范围是您的数据。表:
库(data.table)
funtest如果您开始编写带有参数的变量名函数,您可能会发现data.table
比dplyr
更方便。我最近写了一篇文章。在我看来,标准评估更容易处理数据。表
比dplyr
更容易处理
使用data.table
,您有几种方法将列名用作参数
使用get
您可以使用get
将名称与特定范围内的值进行映射。这里的范围是您的数据。表:
库(data.table)
有趣的