近期,在项目中遇到一个棘手的问题。
R脚本在centos服务器上通过"R --no-save filename.R"的方式运行R脚本可以成功,分析结果也可以存入MySQL,该种方式适合算法工程师测试脚本使用。
但是,同样的脚本,在Java后台调用时却失败了。
为了定位问题位置,在脚本内插入很多打印语句,锁定了问题出现在利用RMySQL包将分析结果存入数据库部分,由于Java调用R脚本时R报错信息无法获取,因此又在R脚本中抓取了try函数的执行结果,并存储于自建的R运行日志中。
查看日志发现,Error in file(file ,open = “wb”): 无法打开链结。
搜索资料发现,该问题的可能原因是,手工清除了操作系统的临时文件,导致帮助文件丢失。
解决办法是由于重启Rserve。
重启Rserve的方法,先杀死,再重启。
#查看Rserve进程端口
netstat -nltp|grep Rserve
#杀死Rserve进程
kill -9 任务ID(该ID通过netstat -nltp|grep Rserve查看,为“/Rserve”前面的数字)
#以远程模式启动Rserve(支持远程访问)
R CMD Rserve --RS-enable-remote
补充:R语言 无法打开文件: No such file or directory
修了一门统计课,需要用到R语言,刚开始上手,还不是很熟悉。
将文件"exam0203.txt"保存之后,使用 read.table进行读取,输出:无法打开文件'exam0203.txt': No such file or directory,如下图,查找了资料,才知道这是因为我的R软件工作目录路径与文件的保存目录路径不一致导致的,现将解决方法附上。
由于是路径不一致导致的出错,所以可以在读取时写上文件的全路径,或者将文件放到当前工作目录下,当然,也可以将文件目录设置为工作目录。
1、读取时写上文件的全路径
我的文件是保存在 G:\R-language路径下
2、将文件放到当前R的工作目录
首先要获取当前R的工作目录,使用 getwd()
再将要读取的“exam0203.txt”文件放到该目录下,就能正确读取了。
3、将文件所在目录设置为R的工作目录
重新设置R的工作目录,使用 setwd()
此时再进行读取文件就可以正确读取了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。