gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:21:33 24 4
gpt4 key购买 nike

不像eval功能,ast.literal_eval功能安全 计算包含 Python 文字或容器显示的表达式节点或字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、列表、字典、集合、 bool 值和无。 IE。它只评估包含文字或容器的字符串,它不评估包含代码的字符串!
我想知道 R 中是否有与literal_eval 方法等效的方法?提前致谢!

引用:
ast.literal_eval function

最佳答案

safely evaluating arithmetic expressions的答案允许创建一个类似于 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"

关于r - R 中是否有等效的 ast.literal_eval python 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com