dplyr mutate 替换动态变量名
dplyr mutate replace dynamic variable name
以下代码将 hwy > 25 的值替换为 1,否则为 0。
library(ggplot2)
data(mpg)
mpg %>% mutate(hwybin=replace(hwy>25,1,0))
如何将 hwy 替换为变量名。大致如下:
varname <- "hwy"
mpg %>% mutate(hwybin=replace(varname>25,1,0))
我觉得我遗漏了一些明显的东西。谢谢。
我会这样做:
library(data.table)
mybin <- function(DF,var,thresh,suffix="bin")
DF %>% mutate(x = + ( .[[var]] > thresh )) %>% setnames("x", paste0(var,suffix)) %>% `[`
mpg %>% mybin("hwy",25)
我确定 data.table 的 setnames
有一些 dplyr
风味的替代品,但我不知道。
不妨将评论变成答案(并使您的问题可重现):
library(dplyr)
library(ggplot2)
library(lazyeval)
data(mpg)
a <- mpg %>% mutate(hwybin=replace(hwy>25, 1 ,0))
varname <- "hwy"
b <- mpg %>% mutate_(hwybin=interp(~replace(varname>25, 1 ,0),
varname=as.name(varname)))
identical(a, b)
## [1] TRUE
以下代码将 hwy > 25 的值替换为 1,否则为 0。
library(ggplot2)
data(mpg)
mpg %>% mutate(hwybin=replace(hwy>25,1,0))
如何将 hwy 替换为变量名。大致如下:
varname <- "hwy"
mpg %>% mutate(hwybin=replace(varname>25,1,0))
我觉得我遗漏了一些明显的东西。谢谢。
我会这样做:
library(data.table)
mybin <- function(DF,var,thresh,suffix="bin")
DF %>% mutate(x = + ( .[[var]] > thresh )) %>% setnames("x", paste0(var,suffix)) %>% `[`
mpg %>% mybin("hwy",25)
我确定 data.table 的 setnames
有一些 dplyr
风味的替代品,但我不知道。
不妨将评论变成答案(并使您的问题可重现):
library(dplyr)
library(ggplot2)
library(lazyeval)
data(mpg)
a <- mpg %>% mutate(hwybin=replace(hwy>25, 1 ,0))
varname <- "hwy"
b <- mpg %>% mutate_(hwybin=interp(~replace(varname>25, 1 ,0),
varname=as.name(varname)))
identical(a, b)
## [1] TRUE