Как перебрать коллекцию списков для вызова функции в R? - PullRequest
2 голосов
/ 18 марта 2020

У меня есть следующие списки в R:

logFramesChartInfo <- list(columnName="quality_logframes_overall", guageChartTitle="Logframes", guageChartId="logframes_quality", histogramChartTitle="Logframes Quality")
indicatorsChartInfo <- list(columnName="quality_indicators_overall", guageChartTitle="Logframes", guageChartId="indicators_quality", histogramChartTitle="Indicators Quality")

Я хотел бы вызвать функцию с каждым из них, и чтобы уменьшить избыточность кода, я хотел бы использовать al oop, чтобы сделать это, например,

chartInfos <- list("logFramesChartInfo" = logFramesChartInfo, "indicatorsChartInfo" = indicatorsChartInfo)
for (key in ChartInfos) {
   myFunction(chartInfos[key])
}

Чтобы проверить это, я использую следующее:

myFunction(chartInfos["logFramesChartInfo"])

Это не работает - я запускаю это как часть приложения R Shiny, и я надеваю не появляется ошибка, скорее диаграмма не отображается.

Если, однако, я вызываю свою функцию, используя переменную logFramesChartInfo, которую я определил выше:

myFunction(logFramesChartInfo)

Диаграмма отображает .

Так что сейчас, чтобы отобразить несколько графиков, мне нужно сделать несколько вызовов следующим образом:

myFunction(logFramesChartInfo)
myFunction(indicatorsChartInfo)
...

Как я могу выполнить итерацию по всем chartInfo с?

1 Ответ

1 голос
/ 18 марта 2020

Похоже, вам просто нужно использовать [[ вместо [ для перемещения вниз по уровню в списке. Ваша функция получает список длины 1, и она не знает, что с ним делать. Сравните:

length(chartInfos["logFramesChartInfo"])
# [1] 1

length(chartInfos[["logFramesChartInfo"]])
# [1] 4

Вы можете прочитать о разнице между операторами индекса здесь .

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