我没有向你展示我的真实代码,因为它太庞大而且难看。 但我使用标准的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)
没有用......我也不想引用函数内的列表数据集。如果我想稍后使用另一个名字的第二个列表怎么办? 有谁知道这个例子的解决方案吗?
答案 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))