如何强制R语言执行字符串引号内的可运行代码语句?
R语言执行字符串形式代码的解决方案
你需要的是将字符串内容解析为R可执行表达式后运行,glue()仅用于字符串拼接插值,返回结果仍为字符串,无论嵌套多少层都无法实现执行代码的效果,正确方案如下:
单条语句执行
以你给出的示例语句为例,使用parse()将字符串解析为R表达式,再用eval()执行即可得到和手动粘贴运行完全一致的结果:
# 示例字符串形式的列表访问语句 target_code <- "list_jsons[[1]]['description']$description$title" # 解析+执行 run_result <- eval(parse(text = target_code)) # 查看结果 print(run_result)
批量处理整个向量
如果需要一次性执行向量内所有语句,可结合lapply()实现批量操作:
# 假设存储所有待执行语句的向量名为code_vec all_result <- lapply(code_vec, function(item) { # 可选:添加异常捕获逻辑,避免单条语句报错打断整体运行 tryCatch( expr = eval(parse(text = item)), error = function(e) paste0("执行失败:", e$message) ) }) # 若所有返回结果均为长度1的标量,可直接转为向量 all_result_vec <- unlist(all_result)
注意:执行前需确保语句中引用的变量(如示例中的
list_jsons)在当前运行环境中已定义,否则会抛出对象未找到的错误。
内容的提问来源于stack exchange,提问作者S. Cow
相关产品推荐
相关产品推荐

