我很想知道 R 是否可以使用它的eval()函数来执行由例如字符串提供的计算。
eval()
这是一个常见的情况:
eval("5+5")
但是,我得到的不是 10:
[1] "5+5"
有什么解决办法吗?
该eval()函数计算一个表达式,但"5+5"它是一个字符串,而不是一个表达式。使用parse()withtext=<string>将字符串更改为表达式:
"5+5"
parse()
text=<string>
> eval(parse(text="5+5")) [1] 10 > class("5+5") [1] "character" > class(parse(text="5+5")) [1] "expression"
调用eval()会调用许多行为,有些行为并不明显:
> class(eval(parse(text="5+5"))) [1] "numeric" > class(eval(parse(text="gray"))) [1] "function" > class(eval(parse(text="blue"))) Error in eval(expr, envir, enclos) : object 'blue' not found
另请参阅。
R 使用函数来实现 try-catch 块:
语法有点像这样:
result = tryCatch({ expr }, warning = function(warning_condition) { warning-handler-code }, error = function(error_condition) { error-handler-code }, finally={ cleanup-code })
在 tryCatch() 中有两个可以处理的“条件”:“警告”和“错误”。编写每个代码块时要了解的重要一点是执行状态和范围。