2015-11-13 2 views
1

Я пишу некоторый код R, и я хочу сохранить список имен функций и то, для чего они предназначены в фреймворке данных, а затем запросить этот фрейм данных, чтобы определить, какую функцию вызывать, но я не могу понять, как это сделать это, или если это даже возможно.R - вызов функции из имени функции, которая хранится в переменной?

В качестве базового примера предположим, что имя функции просто сохраняется как строка в переменной, как я могу вызвать функцию на основе имени функции, хранящейся в этой переменной?

MyFunc <-function() { 
    # Do some stuff... 
    print("My Function has been called!!!") 
    return(object) 
} 

FuncName <- "MyFunc()" 
Result <- FuncName 

мне нужно сделать

Result <- FuncName 

работают так же, как

Result <- MyFunc() 

Кроме того, передавая объекты или другие переменные, к функциям не относятся к тому, что я делаю здесь, поэтому те() всегда будут пустыми. Я понимаю, что такие переменные, как это, могут усложниться.

+1

Является ли 'eval (parse (text = Result))' что вы хотите? –

+6

Если ответ разобран(), вы должны, как правило, переосмыслить вопрос. - Thomas Lumley, R-help (февраль 2005) – Carl

+0

... Кроме того, не следует пытаться оценить вызов функции в качестве символьной строки в первую очередь. –

ответ

5

Вы можете использовать get() с дополнительной парой ().

a<-function(){1+1}                         
var<-"a" 

> get(var)() 
[1] 2 
+3

Или 'eval (call (var))' –

+0

Спасибо! Получить было именно то, что я искал. Плюс, что дополнительный набор() на конце позволяет мне передавать параметры функции, если мне нужно (теперь это не требование, но приятно иметь в качестве опции, если мне это нужно). – user3246693

Смежные вопросы