2014-01-31 4 views
3

Я порождающих функций программно путем вызова в библиотеку Java, это выглядит примерно такДают функции имя в R

f <- getFunction("javaFunctionName") 

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

functionNames <- c("func1", "func2", "func3") 

lapply(functionNames, getFunction) 

После выполнения lapply я смог бы вызвать функции, которые я сделал этими именами:

func1(args) 
func2(args) 
func3(args) 

Я смотрел на эту discussion и либо я что-то отсутствует, или это не то же самое, что я пытаюсь сделать.

Надеюсь, что я был прост и всякая помощь приветствуется. Спасибо за ваше время.

+0

Как насчет одной функции: func (1, args), func (2, args) и т. Д.? Я не думаю, что динамическое создание функций всегда является хорошей идеей. – sashkello

+0

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

+0

«Динамическое создание функции» очень близко к «позднему связыванию» и имеет свое место. Я буду вам доверять, что ваша действительная польза. –

ответ

3

Если вы правильно поняли, не работает ли следующая работа?

functionNames <- c("func1", "func2", "func3") 

yourJavaFunc <- function() "myJavaFunc" 

assignFunctions <- function(fcts){ 
    lapply(fcts, function(x) { 
    assign(x, yourJavaFunc, envir = .GlobalEnv) # add your getJavaFunction locic here 
    }) 
} 

assignFunctions(functionNames) 
+0

Да! Я просто искал функцию «назначить». Спасибо всем за вклад и помощь. – jwilley44

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