Цитирование аргумента, переданного функции - PullRequest
2 голосов
/ 02 апреля 2020

Предположим, у меня есть следующая функция:

print_argument <- function(vector) {
  message(substitute(vector))
}

Эта функция выполняет то, что я хочу, например,

abc <- 1:3
print_argument(abc)

# output:
# abc

Но она не работает для следующих аргумент:

df <- data.frame(a = 1:3)
col_name <- "a"
print_argument(df[[col_name]])

# output:
# [[dfcol_name

Как бы вы обновили функцию, чтобы она также печатала ( используя функцию сообщения ) аргументы, такие как df[[col_name]] дословно?

То есть как бы вы напечатать ( используя функцию сообщения ) следующее: df[[col_name]]

1 Ответ

1 голос
/ 02 апреля 2020

Мы можем deparse перед переносом с message

print_argument <- function(vector) {
  message(deparse(substitute(vector)))
 }

print_argument(df[[col_name]])
#df[[col_name]]

print_argument(abc)
#abc

Когда мы получим вывод замены, это не единственная строка, и ее компоненты можно проверить с помощью as.list

print_argument <- function(vector) {
    as.list(substitute(vector))
   }
print_argument(df[[col_name]])
#[[1]]
#`[[`

#[[2]]
#df

#[[3]]
#col_name


print_argument(abc)
#[[1]]
#abc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...