Я немного удивлен поведением R в очень конкретном случае. Скажем, я определяю функцию square
, которая возвращает квадрат своего аргумента, например:
square <- function(x) { return(x^2) }
Я хочу вызвать эту функцию в другой функции, и я также хочу отображать ее имя, когда я это сделаю. Я могу сделать это с помощью deparse(substitute())
. Однако рассмотрим следующие примеры:
ds1 <- function(x) {
print(deparse(substitute(x)))
}
ds1(square)
# [1] "square"
Это ожидаемый результат, так что все в порядке. Однако, если я передаю функцию, заключенную в список, и обработаю ее с помощью цикла for, произойдет следующее:
ds2 <- function(x) {
for (y in x) {
print(deparse(substitute(y)))
}
}
ds2(c(square))
# [1] "function (x) " "{" " return(x^2)" "}"
Может ли кто-нибудь объяснить мне, почему это происходит и как я могу предотвратить это?