Получение имен введенных векторов в функцию R - PullRequest
0 голосов
/ 25 января 2019

Мне было интересно, как моя R-функция могла бы foo возвращать имена векторов, которые ей вводят?

В этом примере я хочу, чтобы foo вернул "a" и "b".

Вот что я безуспешно пытался:

a = 1:30 ; b = 50:60   # the inputted vectors

foo <- function(...){  # the function

 L <- list(...)
 names(L)
}

# Example of use:
foo(a, b)

Ответы [ 3 ]

0 голосов
/ 25 января 2019
foo <- function(...) as.character(substitute((...)))[-1]

foo(a, b)
# [1] "a" "b"
0 голосов
/ 25 января 2019

Вот вариант с match.call

foo <- function(...) sapply(as.list(match.call())[-1], as.character)
foo(a, b)
#[1] "a" "b"
0 голосов
/ 25 января 2019

Использование substitute, как показано, дает список символов, а deparse, примененный индивидуально к каждому элементу, преобразует каждый в строку символов:

foo <- function(...) sapply(substitute(...()), deparse)
foo(a, b)
## [1] "a" "b"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...