Ответ 1
Если у вас есть повторяющиеся имена и вы вызываете подмножество по имени, возвращается только первый элемент. Фактически, [[
всегда будет давать вам только один элемент, поэтому давайте посмотрим [
.
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
Это отличный пример того, почему следует избегать дублирования имен.