使用 mutate 和 dplyr 创建一个包含替换值的列
creating a column with replaced values using mutate and dplyr
这可能与 Whosebug 上的某处重复,并且是 的后续问题。
现在我正在尝试使用一个变量名作为新列。
类似于:
library(ggplot2)
data(mpg)
mpg %>% mutate(hwy=replace(hwy, hwy>29,10))
下面的代码创建了一个名为 varname 的新列,但我想用 hwy 替换该列。
varname = "hwy"
mpg %>% mutate_(varname=interp(~replace(varname, varname>29, 10), varname=as.name(varname)))
类似于:
mpg %>% mutate_(as.name(varname)=interp(~replace(varname, varname>29, 10), varname=as.name(varname)))
但这不起作用。我认为点符号正在发挥作用,但不太确定如何绕过它。
谢谢。
我没有替换 mpg
现有的 hwy
变量,而是做了以下说明相同的事情并将其放入 :
来自您之前的问题:
library(dplyr)
library(ggplot2)
library(lazyeval)
data(mpg)
# "normal" dplyr
a <- mpg %>% mutate(hwybin=replace(hwy>25,1,0))
# varying just the RHS
varname <- "hwy"
b <- mpg %>% mutate_(hwybin=interp(~replace(varname>25, 1 ,0),
varname=as.name(varname)))
identical(a, b)
对于这个特定问题:
# varying both RHS and LHS
colname <- "hwybin"
z <- mpg %>% mutate_(.dots=setNames(list(interp(~replace(varname>25, 1 ,0),
varname=as.name(varname))), colname))
# tests
identical(a, z)
identical(b, z)
这可能与 Whosebug 上的某处重复,并且是
现在我正在尝试使用一个变量名作为新列。
类似于:
library(ggplot2)
data(mpg)
mpg %>% mutate(hwy=replace(hwy, hwy>29,10))
下面的代码创建了一个名为 varname 的新列,但我想用 hwy 替换该列。
varname = "hwy"
mpg %>% mutate_(varname=interp(~replace(varname, varname>29, 10), varname=as.name(varname)))
类似于:
mpg %>% mutate_(as.name(varname)=interp(~replace(varname, varname>29, 10), varname=as.name(varname)))
但这不起作用。我认为点符号正在发挥作用,但不太确定如何绕过它。
谢谢。
我没有替换 mpg
现有的 hwy
变量,而是做了以下说明相同的事情并将其放入
来自您之前的问题:
library(dplyr)
library(ggplot2)
library(lazyeval)
data(mpg)
# "normal" dplyr
a <- mpg %>% mutate(hwybin=replace(hwy>25,1,0))
# varying just the RHS
varname <- "hwy"
b <- mpg %>% mutate_(hwybin=interp(~replace(varname>25, 1 ,0),
varname=as.name(varname)))
identical(a, b)
对于这个特定问题:
# varying both RHS and LHS
colname <- "hwybin"
z <- mpg %>% mutate_(.dots=setNames(list(interp(~replace(varname>25, 1 ,0),
varname=as.name(varname))), colname))
# tests
identical(a, z)
identical(b, z)