Является ли `for` функцией в R? - PullRequest
9 голосов
/ 19 мая 2019

На странице 307 Нормана Мэтлоффа Искусство программирования R , по словам автора,

for(), на самом деле, является функцией.

Контекст заключается в том, чтобы сделать замечание по фрагменту кода

for (i in 1:length(x)) z[i] <- x[i] + y[i]

Автор комментирует

Хотя синтаксически цикл выглядит безобидным,for() фактически является функцией.

Насколько я понимаю, он говорит о том, что for() - это функция, очень похожая на + - это функция (вызываемый объект).Скажем, мы можем вызывать + стандартным способом вызова функций, например

"+"(3 ,5)  # 8

У меня есть опыт работы в C / C ++ и Python, и я заметил несколько тонких различий между языками.Например,

  • return - это функция, а не оператор в R, поэтому мы должны написать return(1) в скобках.

Возвращаясь кмой вопрос: for функция в R?

Спасибо за любые разъяснения.

1 Ответ

3 голосов
/ 19 мая 2019

for является функцией, но символ for также распознается синтаксическим анализатором как часть удобного синтаксиса, который мы можем использовать для вызова функции for. Это две разные вещи, которые удобно называть одинаковыми (обратите внимание, что in не является функцией).

is.function(`for`)
#> [1] TRUE

x <- y <- z <- 1:3
for (i in 1:length(x)) z[i] <- x[i] + y[i]
z
#> [1] 2 4 6

x <- y <- z <- 1:3
`for`(i, 1:length(x), z[i] <- x[i] + y[i])
z
#> [1] 2 4 6

Создано в 2019-05-19 с помощью пакета представительства (v0.2.1)

Аналогичным образом синтаксис if (cond) foo else bar отображается на вызов функции `if`(cond, foo, bar), но функции else нет.

Все остальные конструкции потока управления (см. ?Control) также являются функциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...