R 中是否有等效的 ast.literal_eval python 方法

ani*_*bey 7 r

evalfunction不同,ast.literal_evalfunction安全地计算表达式节点或包含 Python 文字或容器显示的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、列表、字典、集合、布尔值和无。
即它只评估包含文字或容器的字符串,它不评估包含代码的字符串!

我想知道 R 中是否有与literal_eval 方法等效的方法?提前致谢!

参考: ast.literal_eval 函数

Wal*_*ldi 0

安全计算算术表达式的答案允许创建一个类似于ast.literal_eval字符串输入的函数。
该函数将要input计算的字符串以及allowed操作作为参数,默认值类似于 ast.literal_eval 允许的值:

literal_eval <- function(input, allowed = c("list", "c", "+", "-", "/", "*")) {
  # Create safe empty environment
  safe_env <- new.env(parent = emptyenv())
  
  # assign allowed functions
  lapply(allowed,function(f) assign(f,get(f, "package:base"),safe_env))

  # Evaluate input
  safe_env$expr <- parse(text = input)
  eval(substitute(expr,env = safe_env), env = safe_env)
}

literal_eval("1+1")
[1] 2

literal_eval("c(1,2)")
[1] 1 2

literal_eval("list(2,3)")
[[1]]
[1] 2

[[2]]
[1] 3

literal_eval("system('delete *.*')")
 Error in system('delete *.*') : unknown function "system" 

Run Code Online (Sandbox Code Playgroud)