Доступ к записям списка по имени в цикле - PullRequest
1 голос
/ 21 января 2020

У меня есть список, где каждая запись - это вектор именованных целых чисел, например:

a = c(1:5)
b = c(2:6)
names(a) = c("a","b","c","d","e")
names(b) = c("b","c","d","e","f")
mylist <- list("0" = a, "1" = b)

Имена внутри списка «mylist» всегда начинаются с «0» и увеличиваются на 1, но в По моему реальному сценарию в списке не всегда будет две записи (может варьироваться от 2 до нескольких десятков). Я пытаюсь выполнить l oop по всем именам в моем списке (в данном случае «0» и «1») и получить доступ к информации, соответствующей каждому индексу. Я пробовал

for (x in 0:(length(mylist) - 1)) {
    print(mylist$x)
}

и

for (x in 0:(length(mylist) - 1)) {
    name = as.character(x)
    print(mylist$name)
}

, который также не работает. Я знаю, что могу использовать обычную индексацию списка, такую ​​как

mylist[x]

, но это включает в себя имена (например, "0", "1"), которые я пытаюсь обеспечить, создавая в выводе. Чтобы уточнить, я хочу, чтобы мой вывод был похож на

print(mylist$"0")

вывод:

a b c d e 
1 2 3 4 5 

, а не

print(mylist[1])

вывод:

$`0`
a b c d e 
1 2 3 4 5 

1 Ответ

1 голос
/ 21 января 2020

Если мы хотим показать похожие на $, используйте [[

mylist[[1]]

for (x in 0:(length(mylist) - 1)) {
    name = as.character(x)
    print(mylist[[name]])
}
#a b c d e 
#1 2 3 4 5 
#b c d e f 
#2 3 4 5 6 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...