我有一個函數,它將函數列表作爲參數。從對象列表中獲取其名稱的字符向量
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代碼裏面的時候。我想要一個函數來評估它的參數的一些步驟,這裏從tests
到它的對象名稱的一步,然後停下來,讓我對結果做些什麼,在這裏將它們轉換爲字符串,而不是繼續獲取我可以抓住他們(名字)之前的名字的指稱。
我不確定我是否理解你的問題的一般版本,但如果這個問題出現了很多,可能有更好的方法來完成這些任務。 – MrFlick
感謝您的有用評論。 – andrewH