R передаёт аргументы по значению
Название уже говорит само за себя: R передаёт аргументы по значению. Что это означает? Проще говоря, функция в R не может изменить переменную, которую вы передаёте в качестве аргумента. Рассмотрим простой пример (попробуйте выполнить его в консоли):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
Внутри функции triple() аргумент x перезаписывается значением, умноженным на три, после чего новое значение x возвращается. Если вызвать эту функцию с переменной a, равной 5, результат будет 15. Но изменилось ли значение a? Если бы R передавал a в triple() по ссылке, изменение x внутри функции распространилось бы на переменную a снаружи. Однако R передаёт аргументы по значению, поэтому объекты, которые вы передаёте в функцию, никогда не изменяются — если только вы явно не присваиваете им новое значение. a остаётся равным 5 даже после вызова triple(a).
Какое из следующих утверждений о приведённом ниже коде является ложным?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
Это упражнение является частью курса
Intermediate R
Практическое интерактивное упражнение
Превратите теорию в практику с помощью одного из наших интерактивных упражнений
Начать упражнение