Один из способов использования списков аргументов в сочетании с do.call
. Это не самое красивое решение, но оно работает.
foo.plot <- function(x,y,legend.args,...) {
la <- list(
x="bottomleft",
legend="bar",
pch=1
)
if (!missing(legend.args)) la <- c(la,legend.args)
plot(x,y,...)
do.call(legend,la)
}
foo.plot(1,1, xaxt = "n")
foo.plot(1,1, xaxt = "n",legend.args=list(bg="yellow",title="legend"))
Один из недостатков заключается в том, что вы не можете указать, например, pch = 2, например, в списке legend.args. Вы можете обойти это с некоторыми предложениями, я оставлю его вам, чтобы продолжить драться с ним.
Изменить: см. Ответ Гэвина Симпсона для лучшей версии этой идеи.
>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']
Безопасная оценка узла выражения или строка, содержащая Python выражение. Строка или узел при условии, может состоять только из следующие буквальные структуры Python: строки, числа, кортежи, списки, dicts, booleans и None.
Это можно использовать для безопасной оценки строки, содержащие выражения Python из ненадежных источников без необходимо самостоятельно проанализировать значения.