【发布时间】:2020-02-08 16:42:06
【问题描述】:
我正在尝试查看该字符串是否存在于列表中的任何元素中,然后使用该列表的名称(如果存在)。
目前,我正在使用case_when 和grepl,但我想要一种更有效的方式来查看我的named_list,然后使用该名称。
fruit <- c("apple", "banana", "pear")
drinks <- c("beer", "wine", "coffee")
stuff <- c("chair", "couch", "desk")
df <- data.frame(foo = sample(x = c(fruit, drinks, stuff), size = 10, replace = T),
x = sample(1:500, size = 10, replace = T))
df
# foo x
# pear 449
# wine 241
# pear 53
# couch 72
# banana 443
# coffee 172
# desk 126
# desk 183
# desk 7
# banana 73
df %>%
mutate(category = case_when(grepl(paste0(fruit, collapse = "|"), foo, ignore.case = T) ~ "fruit",
grepl(paste0(drinks, collapse = "|"), foo, ignore.case = T) ~ "drinks",
grepl(paste0(stuff, collapse = "|"), foo, ignore.case = T) ~ "stuff"))
# foo x category
# pear 449 fruit
# wine 241 drinks
# pear 53 fruit
# couch 172 stuff
# banana 443 fruit
# coffee 172 drinks
# desk 126 stuff
# desk 183 stuff
# desk 7 stuff
# banana 73 fruit
# create named list of lists/vectors
named_list <- Hmisc::llist(fruit, drinks, stuff)
named_list
【问题讨论】: