Почему в R передача ls в качестве аргумента функции отличается от передачи ls () в качестве аргумента функции? - PullRequest
0 голосов
/ 03 октября 2018
f <- function(x) {
  a <- 1
  x
}
f(ls())

В приведенном выше коде вызов функции f (ls ()) выведет переменные в глобальной среде.

Но:

f <- function(x) {
  a <- 1
  x()
}
f(ls)

выведет на печатьпеременные в окружении функции f, а именно «a» и «x».

1 Ответ

0 голосов
/ 03 октября 2018

В первом случае вы передаете результаты ls() - это вектор всех объектов в среде.А ваша функция просто печатает то, что было передано с x, а именно - результаты ls().

Во втором случае вы передаете функцию, и функция get выполняется в теле функции.

По сути, вы можете думать о первой версии вашего звонка как:

x <- ls()
f(x)

В качестве дополнительного примера: посмотрите на разницу между print(ls()) и print(ls).

...