假设R中有以下变量:
vals <- c("b", "c")
foo <- data.frame(x=c("a|b", "b|c", "c|d", "e|f|g"))
我想要foo
中另一栏的条目数量从vals
开始,例如
> foo2
x y
1 a|b 1
2 b|c 2
3 c|d 1
4 e|f|g 0
1因为"a|b"有"b",2因为"b|c"有"b"和"c",等等.
我如何使用tidyVerse函数来做到这一点?
我可以拆分x,但交叉口不起作用.几次失败的try :
library(dplyr)
library(magrittr)
> foo2 <- foo %>% mutate(x1=str_split(x, "\\|"), y=intersect(vals, x1))
Error in `mutate()`:
ℹ In argument: `y = intersect(vals, x1)`.
Caused by error:
! `y` must be size 4 or 1, not 0.
> foo2 <- foo %>% mutate(x1=str_split(x, "\\|"), y=intersect(vals, x1[[1]]))
> foo2
x x1 y
1 a|b a, b b
2 b|c b, c b
3 c|d c, d b
4 e|f|g e, f, g b