我目前在R中遇到了eval
函数的问题.在我的实际代码中,我加载了多个库,但为简单起见,我将使用data.table
作为示例.
以下是我的代码片段:
test_code <- "library(data.table); data.table(iris)"
new_env <- new.env(parent = baseenv())
eval(parse(text = test_code), envir = new_env)
当我运行这段代码时,我得到以下错误:
Error in data.table(iris) : could not find function "data.table"
似乎eval
函数没有在新环境中加载data.table
库.我不确定为什么会发生这种情况,因为我期望在新环境中加载库和data.table
函数.
值得注意的是,虽然这个简化的示例只需要加载一个库,但我的实际项目涉及到一个更加复杂和冗长的R test_code
,需要加载许多库.由于我无法预测哪些库需要加载,我希望它们能够在判断代码时自动加载.
Edit
The goal is to test if a codebase that is in principle self-sufficient operates correctly in a completely new environment. In other words, that it works from scratch.
更多背景信息:
我正在开发一个shiny 的数据清理应用程序,它还可以创建R代码来复制应用程序中执行的所有操作,包括加载库.我的目标是测试和判断这个R代码,以验证结果清理后的数据集是否与shiny 应用程序中的数据集匹配.因为R码是动态生成的,所以我事先不知道它的内容.最后,我需要访问R代码(可通过new_env$DT
访问)生成的清理后的数据集,并将其与应用程序生成的数据集进行比较.代码复制测试应该与shiny 的应用程序一起执行.