新年快乐!
我有一个有N个元素的命名列表。
list-element用于重新编码现有向量。
我的代码是在此刻-赫拉为例:
vowels<- c("a","e","i","u")
consonants <- letters[!(letters %in% vowels)]
signs <- c("!",".")
# My named list elment is defind as follows
# in Reality I have a list with more than 20 elements!
Listelement <- list(vowels = vowels, consonants = consonants)
# The variable to recode:
OldVar <- c(vowels,consonants,"","", signs)
# Recoding uses case_when
NewVar = case_when(OldVar == "" ~ "empty",
OldVar %in% Listelement[[1]] ~ names(Listelement[1]),
OldVar %in% Listelement[[2]] ~ names(Listelement[2]),
TRUE ~ "other")
NewVar
是否可以在case_when
中循环第2行和第3行?
我想到了这样的事情:
NewVar2 = case_when(OldVar == "" ~ "empty",
for (i in c(1:length(Listelement))) {
OldVar %in% Listelement[[i]] ~ names(Listelement[i])
},
TRUE ~ "other")
NewVar2
但这并不奏效。
有什么想法吗?
1条答案
按热度按时间bvhaajcl1#
您可以使用
forcats::fct_collapse()
:注意,在函数调用中使用
!!!
运算符来解包Listelement
。