Задача
Я хочу написать функцию, которая изменяет каждый столбец большой матрицы, x :
f = function(x){
# do something to x
# return x
}
Поскольку x очень большой, я бы хотел изменить его "на месте", т.е. без создания копии. Тем не менее, я понимаю, что в R функции «копировать при модификации». Другими словами, если я изменю x в функции f , R сделает копию x .
Предлагаемое решение ( Обновление: не работает! Подробности см. В ответах ниже. )
Таким образом, кажется, что лучшим решением является изменение глобальной переменной, т.е.
f = function(x){
x = deparse(substitute(x))
x = get(x, envir = globalenv())
# do something to x
}
Вопрос
Тем не менее, люди на SO ОЧЕНЬ негативно относятся к передаче глобальных переменных в функции в R. Некоторых людей даже опровергают просто за то, что они спрашивают об этом.
Мой вопрос: каков наилучший способ сделать что-то подобное в R?