Я хочу эмулировать вызов по ссылке в R, и в моем поиске наткнулся на эту ссылку https://www.r-bloggers.com/call-by-reference-in-r/.
Используя стратегию, указанную в ссылке выше, я попытался создать функцию который изменит переданный ему целочисленный вектор, а также вернет измененный вектор. Вот его реализация
library(purrr)
fun = function(top){
stopifnot(is_integer(top))
top1 <- top
top1 <- c(top1,4L)
eval.parent(substitute(top<-top1))
top1
}
Когда я создаю переменную и передаю эту функцию, она отлично работает, как показано
> k <- c(9L,5L)
> fun(k)
[1] 9 5 4
> k
[1] 9 5 4
Но когда я передаю целочисленный вектор напрямую, он выдает ошибку :
> fun(c(3L,4L))
Error in c(3L, 4L) <- c(3L, 4L, 4L) :
target of assignment expands to non-language object
Есть ли обходной путь для этой ситуации, когда, если вектор передается напрямую, мы возвращаем только измененный вектор в качестве результата?
Любая помощь будет принята с благодарностью .. .