如何将R函数中通过变量命名的变量导出到外部环境?
R函数中导出变量到外部的解决方案
优先推荐:通过返回值传递变量
全局赋值容易污染全局环境,引发难以排查的问题,更规范的做法是让函数返回结果,再手动完成赋值:gene_expression <- function(gene) { # 返回命名的结果 structure(5, names = paste0(gene, "_graph")) } # 调用函数并将结果赋值到全局变量 ACTB_graph <- gene_expression("ACTB")如果需要同时返回多个变量,可以返回命名列表,再用
list2env导入全局环境:gene_expression <- function(gene) { list( !!paste0(gene, "_graph") := 5, # 使用rlang的准引用语法动态命名 !!paste0(gene, "_value") := 10 ) } # 将列表内容导入全局环境 list2env(gene_expression("ACTB"), envir = .GlobalEnv)若必须使用全局赋值
你之前的问题大概率是未指定赋值的环境,或是动态变量名的处理有误。可以直接在assign中指定全局环境:gene_expression <- function(gene) { assign(paste0(gene, "_graph"), 5, envir = .GlobalEnv) } # 调用后全局环境会直接生成ACTB_graph变量 gene_expression("ACTB")也可以用
<<-配合动态解析实现,但这种方式可读性较差,不推荐:gene_expression <- function(gene) { var_name <- paste0(gene, "_graph") eval(parse(text = paste0(var_name, " <<- 5"))) } gene_expression("ACTB")
内容的提问来源于stack exchange,提问作者Sparky_47
相关产品推荐
相关产品推荐

