[英]Calling R script from node.js issue loading libraries
我使用'r-script'npm包从node.js运行R脚本。 这个R脚本调用另一个R脚本,它加载了很多库。 我得到一个错误'后端没有包'动物园''。 我有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''
我找到了解决方案。 正如github上'r-script'npm包的文档中所提到的,你应该使用needs()而不是library()或require()来加载包。 所以我从RStudio安装了'needs'包。 安装完成后,它会提示您在调用函数时自动加载此包。 您将无法在此处成功回复,因为您需要写入权限。 因此,以管理员身份打开命令提示符,键入(R)加载R,然后运行库(需求)。 现在您再次收到提示,选择是,您就完成了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.