如何按名将函数创建的列表元素一次性导入R工作环境?
问题解答
1. 一次性导入列表所有元素到工作环境
可以使用list2env()函数直接将列表中的所有元素批量导入到指定环境中,无需手动逐个赋值。示例如下:
# 调用函数得到结果列表 func_list <- my_function(input_1 = 5, input_2 = 6) # 将列表元素导入全局环境 list2env(func_list, envir = globalenv())
执行后,全局环境中会直接生成a、b、c三个对象。如果需要在其他函数内部导入,可将envir参数设为parent.frame(),把元素导入到上层函数的环境中。
2. 自动返回函数内部所有创建的对象
无需手动编写返回列表,可通过获取函数内部环境的对象,自动收集所有非输入参数的变量。修改后的函数示例:
my_function <- function(input_1, input_2){ a <- input_1*2 b <- input_2*3 c <- input_2*10 # 获取函数的所有输入参数名称 arg_names <- names(formals()) # 收集环境中所有非参数的对象 internal_objs <- mget(setdiff(ls(), arg_names)) return(internal_objs) }
调用该函数时,会自动返回函数内部创建的所有对象(排除输入参数)组成的列表。注意:这种方式会包含函数内所有临时变量,若有不需要返回的中间对象,需提前清理或手动排除。
内容的提问来源于stack exchange,提问作者887
相关产品推荐
相关产品推荐

