用 plyr::revalue 替换空值
Replacing empty values with plyr::revalue
我有一个向量,我想根据另一个向量替换其中的一些值。
我为此使用 plyr::revalue
:
x = c("a", "b", "c", "d", "", " ", "d, ", "aaaaa")
var.replace = c("d"=NA, "a"="A")
x %>% plyr::revalue(var.replace)
#[1] "A" "b" "c" NA "" " " "d, " "aaaaa"
var.replace = c("d"=NA, "a"="A", ""=NA)
#Error: attempt to use zero-length variable name
我知道问题 中有一个可接受的答案,但我正在寻找一个优雅的单行代码,本着 tidyverse 的精神。
有吗?
我们可以使用 setNames
创建 ""
作为名称,然后执行 revalue
var.replace <- setNames(c(NA, "A", NA), c("d", "a", ""))
x %>%
plyr::revalue(var.replace)
#[1] "A" "b" "c" NA NA " " "d, " "aaaaa"
你可以使用replace
来处理空元素,然后像往常一样重新赋值,即
replace(x, x == '', NA) %>% plyr::revalue(var.replace)
#[1] "A" "b" "c" NA NA " " "d, " "aaaaa"
阿克伦的回答让我明白了!碰巧您只需要省略名称为空的键即可:
> setNames(c(NA, "A", NA), c("d", "a", ""))
# d a
# NA "A" NA
> c("d"=NA, "a"="A", NA)
# d a
# NA "A" NA
那么,公式就变得很简单了:
var.replace = c("d"=NA, "a"="A", NA)
x %>% revalue(var.replace)
我有一个向量,我想根据另一个向量替换其中的一些值。
我为此使用 plyr::revalue
:
x = c("a", "b", "c", "d", "", " ", "d, ", "aaaaa")
var.replace = c("d"=NA, "a"="A")
x %>% plyr::revalue(var.replace)
#[1] "A" "b" "c" NA "" " " "d, " "aaaaa"
var.replace = c("d"=NA, "a"="A", ""=NA)
#Error: attempt to use zero-length variable name
我知道问题
有吗?
我们可以使用 setNames
创建 ""
作为名称,然后执行 revalue
var.replace <- setNames(c(NA, "A", NA), c("d", "a", ""))
x %>%
plyr::revalue(var.replace)
#[1] "A" "b" "c" NA NA " " "d, " "aaaaa"
你可以使用replace
来处理空元素,然后像往常一样重新赋值,即
replace(x, x == '', NA) %>% plyr::revalue(var.replace)
#[1] "A" "b" "c" NA NA " " "d, " "aaaaa"
阿克伦的回答让我明白了!碰巧您只需要省略名称为空的键即可:
> setNames(c(NA, "A", NA), c("d", "a", ""))
# d a
# NA "A" NA
> c("d"=NA, "a"="A", NA)
# d a
# NA "A" NA
那么,公式就变得很简单了:
var.replace = c("d"=NA, "a"="A", NA)
x %>% revalue(var.replace)