R 函数中列表元素的全局赋值,使用列表的变量名

R 函数中列表元素的全局赋值,使用列表的变量名,r,R,标题有点松散。我想创建一个函数,将列表名作为变量,并为该列表分配元素。到目前为止,我可以通过my\u fun函数中的列表名称访问列表的元素。然后,我可以修改函数中的列表(使用函数参数),并print,以验证分配是否有效。当然,我并没有将这些保存到全局环境中,所以当我在函数外部调用列表时,它没有改变 my_list <- list('original_element') my_fun <- function(some_list) { # check that I can a

标题有点松散。我想创建一个函数,将列表名作为变量,并为该列表分配元素。到目前为止,我可以通过
my\u fun
函数中的列表名称访问列表的元素。然后,我可以修改函数中的列表(使用函数参数),并
print
,以验证分配是否有效。当然,我并没有将这些保存到全局环境中,所以当我在函数外部调用列表时,它没有改变

my_list <- list('original_element')

my_fun <- function(some_list) {

    # check that I can access the list using the parameter name
    print(some_list[[1]])

    # modify the list
    some_list[[1]] <- 'element_assigned_in_function'

    # check that the list was modified
    print(some_list[[1]]) 

}

my_fun(my_list)

# [1] "original_element"
# [1] "element_assigned_in_function"

# of course, my_list hasn't been modified in the global environment
my_list
# [[1]]
# [1] "original_element"


my_list首先,我要明确的是,我不鼓励在全局环境中从函数内部为变量赋值。理想情况下,您应该始终
从要更改的函数返回
值。然而,为了演示起见,这里有一种方法,您可以从函数内部更改列表的内容

my_fun <- function(some_list) {
  list_name <- deparse(substitute(some_list))
  some_list[[1]] <- 'element_assigned_in_function'
  assign(list_name, some_list, .GlobalEnv)
}

my_list <- list('original_element')
my_fun(my_list)
my_list
#[[1]]
#[1] "element_assigned_in_function"

my\u-fun更改为
my\u-fun为什么要从函数内部更改全局环境中的元素?你能按照@Phil的建议从函数中返回元素吗?