Выбрать подстановочный знак в многомерном списке? - PullRequest
0 голосов
/ 24 февраля 2012

В R у меня есть многомерный список. Я могу получить доступ к таким элементам, как:

results[["A1"]][["B2"]][["C1"]]

Конечно, результатом вышеприведенного утверждения также является список.

Я хотел бы сделать что-то вроде:

results[["A1"]][[*]][["C1"]]

или

results[["A1"]][[,]][["C1"]]

Мой желаемый вывод - один большой список, представляющий собой конкатенацию списков для каждого значения (например, "B1", "B2", ...) во втором измерении.

Возможно ли что-то подобное? Я знаю, что могу перебрать нужное измерение:

for (i in 1:length(results[["A1"]])){
    output = c(output, results[["A1"]][[i]][["C1"]]
}

но мне было интересно, есть ли что-нибудь чище? Я все делаю неправильно?

1 Ответ

1 голос
/ 24 февраля 2012

Работает ли это?

sapply( sapply(results[["A1]], "[[", TRUE), "[[", "C1"")

Обобщение до четвертого уровня для определенного имени индекса "D" будет просто:

sapply( sapply( sapply(results[["A1"]], "[[", TRUE), "[[", "C1"), "[[", "D")

Чтение изнутри, какнужно делать с вызовами вложенных функций, все подсписки значений results$A1 собираются и затем обрабатываются для составления списка только тех, которые имеют имена «C1», а затем этот сокращенный список дополнительно извлекается для получения значенийформа results$A1$all-wildcards$C1$D.Учитывая тот факт, что функция «[[» оценивает свой аргумент, вы можете предложить объект без кавычек, который имеет несколько значений, если они являются допустимыми именами списков на соответствующем уровне индексации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...