foo <- function(object, x) {
objname <- deparse(substitute(object))
overwrite(objname, x, parent.frame())
}
bar <- 1
foo(bar, 2)
bar
# [1] 2
bar <- list(A = bar)
foo(bar$A, 3)
bar
# $A
# [1] 3
foo_assign <- function(object, x) {
objname <- deparse(substitute(object))
assign(objname, x, envir = parent.frame())
}
bar <- list(A = 1)
try(assign(bar$A, 3, envir = parent.frame()))
bar <- 1
foo_assign(bar, 2)
bar
# [1] 2
bar <- list(A = 1)
foo_assign(bar$A, 3)
bar
# $A
# [1] 1
`bar$A`
# [1] 3
Run the code above in your browser using DataLab