我正在使用'r-script'npm软件包从node.js运行R脚本。该R脚本调用另一个R脚本,该脚本加载了很多库。我收到一个错误消息“后端没有包'zoo'。我有R版本3.5.3,当我从RStudio运行这些R文件时,它运行得很顺利。我在环境设置中正确定义了PATH变量。我正在使用React作为前端。
我尝试以管理员身份从命令行运行该应用程序,但仍然会出现相同的错误。
//后端
//server.js
router.post("/putData", (req, res) => {
const {simid,delay,decay} = req.body;
let rout = R('rscript.R')
.data()
.callSync();
console.log(simid + delay + decay);
console.log(rout);
return res.json({success:true});
});
// rscript.R
#rscript.R
source("Main.R")
// Main.R
#Main.R
require(zoo)
require(quantmod)
require(Rcpp)
(And a lot of other libraries)
我在服务器端收到以下错误:
[0] POST /api/putData 500 12314.741 ms - 578 /n
[0] Loading required package: zoo
[0] Loading required package: quantmod
[0] Loading required package: xtable
[0] Loading required package: tidyr
[0] Loading required package: hashmap
[0] Loading required package: Quandl
[0] Loading required package: Rcpp
[0] Loading required package: readr
[0] Loading required package: roll
[0] Loading required package: gridExtra
[0] Error in R script rscript.R
[0] 'there is no package called 'zoo''
答案 0 :(得分:0)
我找到了解决方案。如github上的“ r-script” npm软件包的文档所述,您应该使用needs()而不是library()或require()来加载软件包。因此,我从RStudio安装了“需要”软件包。安装后,它会提示您,无论何时调用该软件包中的函数,您都希望自动加载该软件包。您将无法从此处成功进行响应,因为您将需要写权限。因此,以管理员身份打开命令提示符,通过键入(R)加载R,然后运行library(需要)。现在,您再次得到提示,请选择是,然后完成。