Как добавить значения в именованный список только при наличии имени?

У меня есть следующий пример с именем list:

> named_list <- c(0,0,0)
> names(named_list) <- c('a','b','c')
> named_list
a b c 
0 0 0 

И у меня есть вектор со значениями, которые я хочу изменить

> set_to_1 <- c('b','c','d')

Так что теперь я меняю значения

> named_list[set_to_1] <- 1

И я получаю

> named_list
a b c d 
0 1 1 1 

Тем не менее, я хотел бы получить

> named_list
a b c
0 1 1

Как я могу это сделать?

1 ответ

Решение

Может быть, это должно работать для вас:

named_list[names(named_list) %in% set_to_1] <- 1
named_list
# a b c 
# 0 1 1 

Или это:

named_list[intersect(names(named_list), set_to_1)] <- 1
Другие вопросы по тегам