Если у вас есть повторяющиеся имена и вы вызываете подмножество по имени, возвращается только первый элемент. Фактически, [[
будет всегда давать вам только один элемент, поэтому давайте посмотрим на [
.
l["B"]
# $B
# [1] 5
Мы также можем видеть, что попытка c("B", "B")
как подмножество не будет даже дать нам правильный результат, потому что R возвращается и получает первый B
снова.
l[c("B", "B")]
# $B
# [1] 5
#
# $B
# [1] 5
Один из самых безопасных способов для извлечения всех B
элементов является использование логического подмножества names()
вектора. Это даст нам правильные элементы.
l[names(l) == "B"]
# $B
# [1] 5
#
# $B
# [1] 7
Это отличный пример того, почему следует избегать дублирования имен.
Вот почему вы действительно должны избегать дублирования имен. Имена должны быть уникальными. – MrFlick