Czy ktoś wie, jak napisać funkcję F, która przyjmuje wywołanie funkcji (np. Średnią (x = 1:10)) i zwraca tylko nazwę wywoływana funkcja (średnia)?wyodrębnianie nazwy wywołania funkcji z wywołania funkcji
moich najlepszych prób dotychczas są podsumowane poniżej
(function(x1){
return(deparse(substitute(x1)))
})(mean(x = 1:10))
### 'mean(x = 1:10)'
Zmiana x1 (wywołania funkcji) do wyrażenia przed de-parsowania nie wydaje się, aby pomóc wiele, że zwraca
(function(x1){
return(deparse(as.expression(substitute(x1))))
})(mean(x = 1:10))
# "expression(mean(x = 1:10))"
Jeśli to w ogóle możliwe, chciałbym móc również używać anonimowych funkcji jako argumentów, więc powinien powrócić (funkcja (x) print (x)) dla (funkcja (x) print (x)) (1)). Jeśli potrzebujesz wyjaśnienia, prosimy o komentarz. Dzięki.
edit1: aby zauważyć, chciałbym uniknąć sprawdzania pierwszego nawiasu i wycinania kodu przed nim (dla "średniej (x = 1:10)", która zwróci "średnia"), jak " zły (Fun_nAme”jest w rzeczywistości prawnej nazwa funkcji w R.
Pytanie odpowiedź: odpowiedź Josh O'Briena była idealna: funkcja F który spełnia powyższe warunki jest
F <- function(x) deparse(substitute(x)[[1]])
to działa ładnie dla operatorów binarnych, funkcji standardowych i funkcji anonimowych