Te nie wyglądają jak struny; to wygląda jak lista funkcji. Aby odpowiedzieć na pytanie zadane w tytule, zobacz: get()
. Na przykład, przy użyciu listy ale przechowywane jako ciągi znaków:
funcList <- list("*", "sin")
możemy użyć get()
powrót funkcji z nazwą nadaną przez wybranego elementu listy:
> f <- get(funcList[[1]])
> f
function (e1, e2) .Primitive("*")
> f(3,4)
[1] 12
Alternatywą jest match.fun()
funkcja, która dany ciąg znajdzie funkcję o pasującej nazwy tego łańcucha:
> f2 <- match.fun(funcList[[1]])
> f2(3,4)
[1] 12
ale jak ?match.fun
mówi nam, prawdopodobnie nie powinniśmy tego robić po znaku zachęty, ale z poziomu funkcji.
Jeśli masz listę funkcji, to można po prostu indeks na liście i użyć go jako funkcję:
> 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
lub można zapisać funkcje jako obiektów tymczasowych, ale niewiele punkt w ten sposób:
> f3 <- funcList2[[1]]
> f3(3,4)
[1] 12
> f4 <- funcList2[[2]]
> f4(1.2)
[1] 0.9320391
Twój przykład działa dla m e i elementy twojej listy nie są znakami, są funkcjami. –