如何在列表集合中迭代以调用R中的函数

  • 本文关键字:调用 函数 迭代 列表 集合 r
  • 更新时间 :
  • 英文 :


我在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")

我想用它们中的每一个调用一个函数,为了减少代码冗余,我想使用一个循环来实现这一点,例如

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的列表,但它不知道该怎么处理。比较:

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

您可以在此处了解索引运算符之间的区别。

最新更新