私は関数のリストを引数として取る関数を持っています。オブジェクトのリストから、その名前の文字ベクトルを取得
library(moments)
library(plyr)
tests <- list(mean, varience, skewness, kurtosis)
f <- function(X, tests){
out <- each(... = tests)(X) #each from plyr
names(out) <- GetNames(tests)
out
}
私はGetNames
が、この場合、関数で、オブジェクトのリストを取り、テキストなどのオブジェクトの名前を返すようにしたいです。理想的には、私は名前付きオブジェクトの任意のリストで動作するようにGetNames
が欲しい:
> GetNames(tests)
[1] "mean" "varience" "skewness" "kurtosis"
as.character(tests)
は、自分の名前を、各関数のコードのテキストを返しません。
私が試した:
GN <- function(X) deparse(substitute(X))
GetNames <- function(X) lapply(tests, GN)
GetNames(tests)
をしかし、これは返します
[[1]]
[1] "X[[i]]"
[[2]]
[1] "X[[i]]"
[[3]]
[1] "X[[i]]"
[[4]]
[1] "X[[i]]"
Rコードを書くとき、私は頻繁にこの問題のいくつかのバージョンがあります。私は関数の引数をいくつかのステップを評価する、ここでは1つのステップtests
からそのオブジェクトの名前にして停止して、結果に何かをさせてください、ここでは文字列に変換するのではなく、私は彼ら(名前)をつかむことができる前に、名前の指示対象。
問題の一般的なバージョンを理解できないのですが、これが多くなると、これらのタスクを実行するためのより良い方法があるかもしれません。 – MrFlick
お寄せいただきありがとうございます。 – andrewH