我一直在使用的后期R,rserve和ggplot.
在R控制台中执行此代码时,会直接呈现带有两个条形的图表.png(file ='Yash_GenderVsTotalAccountBalance.png',width = 400,height = 350,res = 72)ggplot(data = YashCustomersAccounts,aes(x = GENDER_DESC,y = ACCOUNT_BALANCE))+ geom_bar(stat ='identity')dev.关闭()
但是当我使用Rserve从JAVA调用相同的代码(涉及ggplot调用)时,它会创建一个空白的png.代码如下.
package RRnD;
import java.awt.*;
import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;
public class PlottingGenderVsTotalAccountBalance {
public static void main(String[] args) throws RserveException {
try {
RConnection c = new RConnection(); // make a new local connection on default port (6311)
System.out.println("1. Connection created ----------------------------------------------------------------------");
System.out.println("Working directory = "+c.eval("getwd()").asString());
System.out.println("2. Working dir read ----------------------------------------------------------------------");
c.eval("YashCustomers <- read.csv('YashCustomer.csv', header=TRUE)");
c.eval("YashAccounts <- read.csv('YashAccount.csv', header=TRUE)");
c.eval("YashCustomersAccounts <- merge(YashCustomers,YashAccounts, by='CUSTOMER_ID')"); …Run Code Online (Sandbox Code Playgroud) 我试图在R控制台中使用Rserve()命令启动Rserve,但我收到错误 /Library/Frameworks/R.framework/Resources/bin/R: line 141: exec: sh: not found
我有Mac OSX Maverick.我安装了R版本3.1.0.在此之后,我尝试使用命令install.packages("Rserve")安装Rserve,之后显示的消息为红色
trying URL 'http://cran.cnr.Berkeley.edu/bin/macosx/mavericks/contrib/3.1/Rserve_1.7-3.tgz'
Content type 'application/x-gzip' length 329829 bytes (322 Kb)
opened URL
==================================================
downloaded 322 Kb
Run Code Online (Sandbox Code Playgroud)
在此之后我在R控制台中给出了命令库(Rserve)并且没有出现错误但是当我给出命令Rserve()来启动服务器时,我得到了上面提到的错误.
我无法理解为什么会出现这个错误.是因为Rserve未成功安装?如何安装Rserve?我也尝试通过源包安装Rserve.我从rforge网站下载了源代码包,当我发出命令install.packages("Rserve",type ="source")时,我得到的错误是:
installation of package ‘Rserve’ had non-zero exit status
任何帮助都会很棒!
当我从RStudio启动Rserve并尝试使用RSclient连接到Rserve时,如下面的代码所示:
#Loading Libraries
library(Rserve)
library(RSclient)
#Loading Rserve
Rserve(args='--no-save --slave')
#Open Connection to Rserve and Executing openNPL
conn <- RS.connect(port=6311)
RS.eval(conn,library(openNLP))
Run Code Online (Sandbox Code Playgroud)
一切正常.
但是如果我尝试从命令行启动Rserve(模拟Java的功能).作为代码:
#loading Rserve from command line, to simulate what java does.
#Using Mac OS 10.10.2
/Library/Frameworks/R.framework/Resources/bin/R CMD /Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rserve/libs//Rserve --no-save --slave --RS-port 6311
#in RStudio
#Loading Rclient
library(RSclient)
#Loading Rserve
Rserve(args='--no-save --slave')
#Open Connection to Rserve and Executing openNPL
conn <- RS.connect(port=6311)
RS.eval(conn,library(openNLP))
Run Code Online (Sandbox Code Playgroud)
我在RStudio中收到此错误:
rsc_abort: connection closed by peer
Error in RS.eval(conn, library(openNLP)) :
read error …Run Code Online (Sandbox Code Playgroud) 我有一个现有的Javascript/HTML应用程序.我想利用R Programming科学计算和图形的力量.
我的目标是,
如何实现这一目标,
我应该连续运行R,使用类似的东西web sockets并连接到R?如果做如何传递R脚本来执行并获取输出包?
有Rserve.有一些nodeJS实现Rserve.但问题是,每行代码都应该通过evaluate命令传递.即使我这样做,如何处理图形输出?
我探索了一些openCPU.如果使用openCPU R软件包,R应该连续运行opencpu库,每个我们启动R和openCPU,它从不同的端口号开始.如果我关闭R会话,opencpu服务器也会终止.
如果我opencpu在我的机器上安装独立服务器,如何使用R?我已经安装了openCPU独立服务器,之后就出现了问题.
我该怎么办,我该怎么做才能完成我的任务.我有点不知道要去哪个方向.请详细说明一下.我相信大多数人都需要这个.
我曾经使用过shiny,但在这种情况下,我无法使用它.需要从外部Web应用程序连接R.
我需要在iPython中连接pyRserve,但是当我尝试连接它时出错.这是错误.
conn = pyRserve.connect()
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
RConnectionRefused: Connection denied, server not reachable or not accepting connections.
Run Code Online (Sandbox Code Playgroud)
在pyrserve手册和建议纠正这一点,但我不明白我需要做什么.这是建议(注)
注意当应该打开与Rserve的远程连接,并且pyRserve无法连接到它时,很可能Rserve只监听它自己的内部网络连接.要强制Rserve接受来自其他计算机的连接,请创建一个名为/etc/Rserv.conf的文件,并至少添加以下行:remote enable然后重新启动Rserve.
所以,我需要知道如何实现注释并在python中连接Rserve
感谢大家
问题版本1,我们可以让pr_fun进程重新运行而无需等待ch_fun()完成
ch_fun <- function() {Sys.sleep(10)}
pr_fun <- function() {ch_fun(); return("Done")}
pr_fun()
Run Code Online (Sandbox Code Playgroud)
问题实际版本
R会话1作为svSocket服务器
library(svSocket)
startSocketServer(port = 9875,local=FALSE)
Run Code Online (Sandbox Code Playgroud)
R session 2作为svSocket客户端
con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"Sys.sleep(20)")
Run Code Online (Sandbox Code Playgroud)
R session 3作为svSocket客户端
con <- socketConnection(port = 9875,host="127.0.0.1")
evalServer(con,"a=10")
Run Code Online (Sandbox Code Playgroud)
如果我们运行会话2的代码行,而服务器正在处理Sys.sleep调用,我们会快速将会话3的代码行放在会话3中并中止它仍然被处理的调用.我们可以通过检查是否创建了对象"a"来检查服务器端.
我的观点是我们没有必要等待工作在第3次会议中完成仍然处理,所以不知何故工作堆积在会话端,我们不必等待工作完成只是将它们发送到服务器并中止等待过程并继续前进.我们可以使用Ctrl + C或Esc手动中止,但是如何在函数中执行此操作.我希望pr_fun在服务器会话中调用ch_fun并立即继续返回.
我遇到了一个问题,我从RSclient连接到Rserv,并且在建立TLS连接时,连接在95%的时间内都不起作用.它大部分时间都是失败的,而且>有时<它只是起作用.但是,当我在没有TLS的情况下建立连接时,它每次都有效.这是一个不成功的连接:
con <- RS.connect(host = "127.0.0.1", port = 4445, tls = TRUE)
RS.login(con, user = "myRserveUserName", password="myRservePW", authkey=RS.authkey(con))
rsc_abort: read error
Error in RS.authkey(con) : read error - could not obtain response header
Run Code Online (Sandbox Code Playgroud)
同时,在RServe控制台中我收到此错误:
Error: ignoring SIGPIPE signal
Fatal error: unable to initialize the JIT
Run Code Online (Sandbox Code Playgroud)
我将补充一点,我正在运行最新的R和库版本以及openssl.我很感激任何想法.谢谢
编辑:添加sessionInfo()输出
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.8 (Santiago)
Matrix products: default
BLAS: /usr/lib64/R/lib/libRblas.so
LAPACK: /usr/lib64/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 …Run Code Online (Sandbox Code Playgroud) 我是RServe(和FastRWeb)的新手.我安装了RServe 1.7.0,因为我想使用它的内置网络服务器.由于我已经在这台机器上运行了apache,我想在自定义端口上运行RServe/FastRWeb.
我做了cd /usr/local/lib/R/site-library/FastRWeb;sudo ./install.sh,创建了/ var/FastRWeb /目录树.
我没有看到任何提到端口的配置文件.默认的/var/FastRWeb/code/rserve.conf如下所示:
socket /var/FastRWeb/socket
sockmod 0666
source /var/FastRWeb/code/rserve.R
control enable
Run Code Online (Sandbox Code Playgroud)
我猜这意味着它默认使用unix套接字?所以我认为我的问题是我究竟需要将该文件放入(并从中移除),比如让它在TCP端口8888上监听?还有什么我需要做的吗?(我希望能够从其他机器连接,而不仅仅是localhost.)
可能相关的是,我看过/var/FastRWeb/web/index.html并且它包含将要连接的javascript是/cgi-bin/R/特定于使用Apache时的路径,还是它会好起来的,原样,什么时候使用RServe?
是否可以在一台服务器上同时运行多个Rserve实例?
例如10个实例意味着10个独立的R工作区通过Rserve在同一台机器上监听不同的端口?
文档说它应该位于/etc/Rserv.conf不使用Ubuntu 13.10的情况下.
当我运行sudo find / 'Rserv.conf'或sudo find / '*Rserv.conf'它没有返回这样的文件.
但Rserve工作正常.
我对linux很陌生,所以也许我在搞乱这里的东西.
我在哪里以及如何找到此配置文件?