有没有办法在 R 中“调用”一个函数?

时间:2021-03-29 21:39:11

标签: r

我正在从事一个需要大量图表的项目,我必须为每个图表都提供一个来源。有没有办法只写一次,以后再参考?

我有这个:

plot(db)
grid.text("Fuente: Elaboración propia con datos del INEGI", 0.8, 0.03,
    gp = gpar(fontfamily = "Arial", fontface = "italic", cex = 0.7))

plot(db_2)
grid.text("Fuente: Elaboración propia con datos del INEGI", 0.8, 0.03,
    gp = gpar(fontfamily = "Arial", fontface = "italic", cex = 0.7))

需要这样的东西:

fuente <- grid.text("Fuente: Elaboración propia con datos del INEGI", 0.8, 0.03,
    gp = gpar(fontfamily = "Arial", fontface = "italic", cex = 0.7))

plot(db)
fuente

plot(db_2)
fuente

2 个答案:

答案 0 :(得分:2)

你的意思是

fuente <- function() {
   grid.text("Fuente: Elaboración propia con datos del INEGI", 0.8, 0.03,
    gp = gpar(fontfamily = "Arial", fontface = "italic", cex = 0.7))
}

?然后 fuente() 将调用您的函数/执行您的代码。

如果你想变得非常聪明,你可以

makeActiveBinding("fuente2", fuente, .GlobalEnv)

然后调用 fuente2(不带括号)应该可以(但我不建议这样做:这可能太聪明了/不是标准的习惯用法)

一个更标准的方法是为你的绘图调用创建一个包装函数:

myplot <- function(x) {
   plot(x)
   grid.text(...)
}
myplot(db)
myplot(db2)

(这不是文字,用您的 ... 调用的正文填写 grid.text()

答案 1 :(得分:0)

一个选项是也用 quote 包裹,然后使用 eval

fuente <- quote(grid.text("Fuente: Elaboración propia con datos del INEGI", 0.8, 0.03,
 gp = gpar(fontfamily = "Arial", fontface = "italic", cex = 0.7)))
plot(db)
eval(fuente)
相关问题