R 4.1.1环境下如何将txt文件内的R命令读取为列表
R读取txt中赋值语句生成目标列表的实现方法
核心实现思路
- 读取文件中的R代码字符串后,将其放在独立的自定义环境中执行,避免污染全局变量
- 执行完成后将自定义环境直接转换为列表,环境中的变量名自动对应列表的键,变量值对应列表的值
最简实现代码
确认文件内容安全的场景下可以直接使用:
read_into_list_func <- function(file_path) { # 新建独立运行环境 run_env <- new.env() # 读取文件代码并在独立环境中执行 source(file_path, local = run_env) # 环境转列表返回 return(as.list(run_env)) }
使用方法
# 调用函数读取文件 l <- read_into_list_func("path/to/file/my_file.txt") # 测试输出 l$a # [1] 1 2 3 l$b # [1] 4 5 6
带格式校验的安全版本
如果需要避免文件中存在恶意或不符合要求的代码,可以增加格式校验逻辑,适配变量名 = c(数字序列)的格式规则:
read_into_list_func_safe <- function(file_path) { run_env <- new.env() # 先读取所有行 code_lines <- readLines(file_path) # 校验每行格式符合要求,可根据实际赋值规则调整正则表达式 is_valid <- grepl("^\\s*[a-zA-Z0-9_]+\\s*=\\s*c\\([0-9,\\s]+\\)\\s*$", code_lines) if (any(!is_valid)) { stop(sprintf("文件第%s行格式不符合要求,请检查", paste(which(!is_valid), collapse = "、"))) } # 校验通过后执行代码 eval(parse(text = code_lines), envir = run_env) return(as.list(run_env)) }
内容的提问来源于stack exchange,提问作者CutePoison
相关产品推荐
相关产品推荐

