2016-11-09 16 views
2

関数のグループ(リストまたはベクトル)を別の関数に送信したいと思います。私が送った個々の機能の名前を得るのが好きです。私はまた、それらの機能を使用したいが、それはうまく動作しているようだ。例えばRで関数のベクトルを別の関数に渡し、渡された各関数を名前で参照してください

:私が等しくなるように関数func1をしたいと思い何

funcA <- function(x,y){z=x+y} 
funcB <- function(x,y){z=x-y} 

myfunc <- function(x,y,funclist=c(funcA, funcB)){ 
func1 <- deparse(substitute(funclist[1])) 
} 

は "てfuncA" であるが、この例では、それは等しい "funclist [1]"。

myfunc <- function(x,y,funclist=funcA){ 
func1 <- deparse(substitute(funclist)) 
} 

などの単一の関数名でリストを置き換えると、func1は "funcA"になります。私の欠点はdeparse(substitute())の理解にあると思うが、私が見落としているもう一つの方法があるのだろうかと思っている。

+0

チャレンジは、要素を評価せずに 'funclist'ベクトルをサブセット化することです。いくつかのカギングのある方法があるかもしれません。 –

答えて

2
funcA <- function(x,y){z=x+y} 
funcB <- function(x,y){z=x-y} 

myfunc <- function(x,y,funclist=c(funcA, funcB)){ 
    func.vec <- as.character(substitute(funclist)) 
    func1 <- func.vec[2] 
    print(func1) 
    func2 <- func.vec[3] 
    print(func2) 
} 

myfunc(1,2, c(funcA,funcB)) 
[1] "funcA" 
[1] "funcB" 
+0

これは関数を評価しますが、 '' funcA "'という希望の出力を提供しません。そして、それが不可能な場合、それがなぜではないかについての指針。 –

+0

@PierreLafortuneこれはあなたが欲しいものですか?私はあなたが望む出力を以前にチェックしなかったことを本当に残念に思っています。 –

+0

OPはなぜ機能内で 'funclist [1]'をサブセット化するのに問題があるのか​​を尋ねています。 –

関連する問題