Они не похожи на строки; это выглядит как список функций. Чтобы ответить на вопрос, заданный в вашем заголовке, см. get()
. Например, используя ваш список, но хранится в виде строки символов:
funcList <- list("*", "sin")
мы можем использовать get()
для возврата функции с именем, заданным выбранным элементом списка:
> f <- get(funcList[[1]])
> f
function (e1, e2) .Primitive("*")
> f(3,4)
[1] 12
Альтернативой является функция match.fun()
, которая по заданной строке найдет функцию с именем, совпадающим с этой строкой:
> f2 <- match.fun(funcList[[1]])
> f2(3,4)
[1] 12
но, как говорит ?match.fun
, мы, вероятно, должны делать это не по приглашению, а изнутри функции.
Если у вас есть список функций, то можно просто проиндексировать список и использовать его в качестве функции:
> funcList2 <- list(`*`, sin)
> str(funcList2)
List of 2
$ :function (e1, e2)
$ :function (x)
> funcList2[[1]](3, 4)
[1] 12
> funcList2[[2]](1.2)
[1] 0.9320391
или вы можете сохранить функции как промежуточные объекты, но в этом нет особого смысла:
> f3 <- funcList2[[1]]
> f3(3,4)
[1] 12
> f4 <- funcList2[[2]]
> f4(1.2)
[1] 0.9320391