названием этого датафрейма.
library(magrittr)
my_f <- function(dataset) {
sprintf("Your dataset is named %s", deparse(substitute(dataset)))
}
Вроде работает, но если отправлять датафрейм через конвейер, то в месте названия датафрейма остаётся только точка.
my_f(mtcars)
# [1] "Your dataset is named mtcars"
mtcars %>%
my_f()
# [1] "Your dataset is named ."
Подскажите, пожалуйста, как мне поженить эту функцию с конвейером из magrittr?
my_f <- function(dataset) { paste("Your dataset is named", quote(dataset)) }
quote() возвращает сам аргумент без попытки оценить выражение, то есть ваша функция будет всегда возвращать "Your dataset is named dataset". Разве не так?
а можно просто воспользоваться базовым пайпом: mtcars |> my_f()
Да, к сожалению, я не могу поставить версию новее 4.0.3. То есть у меня только magrittr
магритр - это же просто функция ... мне кажется, нельзя внутрь этой функции передать атрибут имени в виде параметра ... похоже, нужно вытаскивать это из глобального окружения, но как-то криво это все
В итоге вроде нашёл решение. Действительно, приходится копаться в стэке вызовов, и всё это выглядит некрасиво. Но м.б. кому-то пригодится.
Обсуждают сегодня