1. 学ぶ
  2. /
  3. コース
  4. /
  5. Intermediate R

Connected

演習

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)

指示

50 XP

選択肢