У меня есть функция, которая принимает в качестве аргумента список функций.Из списка объектов, получить вектор символов их имен
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