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 передає за значенням, тож об'єкти 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)
Ця вправа є частиною курсу
Середній рівень R
Практична інтерактивна вправа
Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ
Почати вправу