如何用lapply添加函数参数作为情节标题?

时间:2017-08-04 02:01:43

标签: r variables plot title lapply

我没有向你展示我的真实代码,因为它太庞大而且难看。 但我使用标准的r包重新创建了这个问题:

# a list of a few r standard datasets
datasets <- list(PlantGrowth, cars, faithful)

# a function that plots a dataset and adds its name to the title
plotstuff <- function(dataset) {
  plot_title <- substitute(paste("Plot of ", dataset, sep=" "))
  plot(dataset, main = plot_title)
}

当我使用单个数据集(如

)运行函数时,数据集的名称(即函数参数)已成功添加到绘图标题中
plotstuff(PlantGrowth)
plotstuff(cars)
plotstuff(faithful)

由于我有很多数据集,我想用这样的lapply来做这个:

lapply(datasets, plotstuff)

但是这样做我得到了奇怪的标题:[[(X,i)的图,而不是数据集的名称。 如何使用lapply使数据集的名称显示在图标题中?

这是我能找到的唯一相关主题。 (它并没有真正帮助......)

Use variable name as plot title with lapply

编辑: 谢谢! 但我似乎不理解另一个例子。

“在列表项的名称上使用lapply代替:”

lapply(names(afn), function(x) plot(afn[[x]], main=x))

首先,我在列表中添加名称:

datasets <- list(PlantGrowth = PlantGrowth, cars = cars, faithful = faithful)

然后我尝试了:

plotstuff <- function(dataset) {
  chart_title <- substitute(paste("Plot of ", dataset, sep=" "))
  plot(datasets[[dataset]], main = chart_title)
}
lapply(names(datasets), plotstuff)

没有用......我也不想引用函数内的列表数据集。如果我想稍后使用另一个名字的第二个列表怎么办? 有谁知道这个例子的解决方案吗?

1 个答案:

答案 0 :(得分:0)

与其他问题一样,lapply不会在此处执行您想要的操作。当它应用函数时,它将它应用于列表的元素,而不是用于创建列表的项目。

怎么样:

datasets <- list(PlantGrowth = PlantGrowth, cars = cars, faithful = faithful)

plotstuff <- function(dataset, name) {
  plot_title <- paste("Plot of ", name, sep=" ")
  dev.new()
  plot(dataset, main = plot_title)
}

mapply(plotstuff, dataset = datasets, name = names(datasets))