当我尝试在Mac OS上从Java Netbeans运行R脚本时,我遇到了问题.我真的在互联网上寻找这个问题的答案,但没有任何作用.
我已经使用了Rserve和Runtime.getRuntime().exec("Rscript myScript.R"),但它们都不能用于我的程序.
当我使用Rserve时,我在R控制台上运行Rserve(args =" - no-save"),在Java程序上运行Rconnection.eval("\ myscript.R"),当我执行它时,程序继续运行而没有任何响应,没有错误也没有停止.事实上,当我尝试执行更简单的R脚本时,比如计算平均值或类似的东西,它可以工作,但是当我尝试在xts/zoo时间序列中强制data.frame或者只是为了加载xts/zoo库首先在我的脚本中,程序不会停止运行并且什么也不做.
另一方面,当我尝试执行"Runtime.getRuntime().exec("Rscript myScript.R")"就像出现在其他类似帖子中一样,没有任何反应.程序看起来执行脚本但它不会给我任何结果,尽管至少停止运行.也许是因为Mac OS而且我无法向Java表明什么是Rscript或R.app路径,我真的不知道.
非常感谢你,我希望你能帮助我.
哈维.
文件代码是:
public void Rconnection () {
RConnection c=new RConnection();
System.out.println("INFO : Trying to Connect to R");
c.parseAndEval("source(\"/scriptname.R\")");
System.out.println("Greeting from R:" + result.asString());
c.close();
}
Run Code Online (Sandbox Code Playgroud)
R脚本是:
EU.df <- read.csv("/myinput.csv",header=T)
EU.xts <- xts(EU.df[,2:5],seq(as.Date("1970-01-02"),len=nrow(EU.df),by="day"))
write.csv(EU.df, file = "/myoutputfile.csv",row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
也许是因为R库或MAC OS存在一些问题.
更新:
在尝试对这个问题的评论中详述的各种事情后,我的问题已经发生了变化.之前在这个问题中描述的问题可能确实是由于@9716所建议的不良JSON,或者与我的"$PATH"配置有关,正如@RandyLai所讨论的那样.
我可能已经确定了潜在的问题:字符编码.在崇高的文本使用我的生成变异,在我的前面YAML事项附加符号.Rmd文件导致从那些最初描述,我似乎不再得到不同的错误(这要求原来这里的问题时,我一直在做):
Error en yaml::yaml.load(front_matter)
Run Code Online (Sandbox Code Playgroud)
有趣的是,在RStudio或终端(或从shell脚本)中使用相同的YAML时,不会抛出此错误.当我从YAML中删除变音符号时,我在ST中没有错误; 但是,如果我将变音符号放在主文档中,则会NA在生成的HTML中进行渲染.这种类似于我之前发生的事情,我在下面描述为"wackily错误"的HTML输出.
在对这个问题的评论中,我试图对我做各种各样的事情"$PATH",因为它们对于@RandyLai来说似乎没有必要; 我特别是指在添加路径pandoc到/etc/launchd.config:具有还原默认路径之后/usr/bin:/bin:/usr/sbin:/sbin,一切工作以ST为我描述现在,不管我用我的体型变体SublimeKnitr-knitr的.sublime-build或R Box-R Markdown的.sublime-build.
这是我的语言环境信息,以防它有用:
Mi-Mac:~ LeGastronome$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
我试图找出Sublime Text如何执行其.sublime-build文件.
在我的Mac上(v10.9.3)崇高的文本3我已经创建了两个自定义生成变异SublimeKnitr的knitr-Markdown和R型箱体的R Markdown语法; 这是我.sublime-build的前者文件,它具有完整功能的原始/默认构建,后跟我的错误变体:
{
"selector": "text.html.markdown.knitr",
"working_dir": "${project_path:${folder}}",
"cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
"shell": true,
"variants": …Run Code Online (Sandbox Code Playgroud) 在Unix群集上作为批处理作业运行R脚本时遇到问题。问题是当尝试在环境中加载库时,R无法找到该库。我举一个例子。我将使用基本的R脚本名称sess.R:
print(.libPaths())
library("gtools")
print(sessionInfo())
Run Code Online (Sandbox Code Playgroud)
如果我只是使用以下命令从命令行运行此脚本:
$ Rscript sess.R
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[1] "/usr/lib64/R/library" "/usr/share/R/library"
R version 3.2.3 (2015-12-10)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.6 (Final)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets base
other attached packages:
[1] gtools_3.5.0
Run Code Online (Sandbox Code Playgroud)
库“ gtools”已正确加载,脚本正在运行。但是,如果我编写一个简单的批处理作业(我将在该作业中包含几个可选参数,包括错误和输出文件),例如:
#!/bin/bash
#SBATCH --output=sess.out
#SBATCH --error=sess.err
Rscript sess.R
Run Code Online (Sandbox Code Playgroud)
一秒钟后作业失败。我得到的两个输出文件当然是sess.out和sess.err。Sess.out包含库目录:
[1] "/usr/lib64/R/library" "/usr/share/R/library"
Run Code Online (Sandbox Code Playgroud)
这似乎与从命令行运行Rscript时的相同,所以那里没有错误。但是,由于脚本已终止,因此无法打印Info Session。sess.err文件包含以下错误:
Error in library("gtools") : there is …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,当它来源时检查脚本是否以交互方式运行interactive().如果以交互方式运行,则不会搜索命令行参数.但是,如果它不是以交互方式运行,则会搜索命令行参数并引发错误.
这通常很好,但有时我写了第二个R脚本,我想独立运行只是为了处理一些数据.所以Script2源脚本1,Script1检测到它没有以交互方式运行,并开始搜索命令行参数并抛出错误.
除了interactive()脚本可以检测其上下文之外,还有其他方法吗?例如,我希望在直接运行时与在加载它以访问其内部函数之一时需要单独的行为.使用包我可以做一些类似dplyr::arrange()访问arrange而无需加载所有dplyr.
编辑:我目前非常janky解决方法是启动一个交互式会话,源脚本1,用于save.image()保存函数,然后在Script2用于load加载保存的.RData文件.但显然这不是......优雅.
我不认为我使用的确切代码是相关的,但包括它以防有人认为这对答案很重要...
剥离示例代码:
#!/usr/bin/env Rscript
library(optparse)
function1 <- function(etc,etc) {}
function2 <- function(etc,etc) {}
if(!interactive()) {
# example call
# Rscript create_reference_file.R -c cd4cd8 -o /home/outputfolder/
option_list = list(
make_option(c('-c', '--cell'), type = 'character', default = NULL,
help = 'the name of the cell',
metavar = 'character'),
make_option(c('-o','--outdir'), type = 'character', default = NULL,
help = 'the location where you wish to store …Run Code Online (Sandbox Code Playgroud) 我在安装和使用 R 时有点迷失。我从源代码安装了 R 3.0.1 并按照建议进行了./configure、make、make check和make install 。但是我尝试运行 R,但它说 R 不在 /usr/bin 文件夹中。因此,我然后使用cp将整个 R-3.0.1/bin 目录复制到我的 /usr/bin 目录中。现在,当我尝试在 hello_world.R 脚本上使用 RScript 时,我遇到了一些关于 /usr/bin/env 的错误,这是我从 O'Reilly R In a Nutshell 书中编写的,我存储在文件 hello_world.R 中,内容如下:
#! /usr/bin/env RScript
print("Hello World!");
Run Code Online (Sandbox Code Playgroud)
很简单,但是当我尝试加载它时,出现以下错误:
$ ./hello_world.R
/usr/bin/env: RScript: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是 PATH 问题或其他问题,但当我在 /usr/bin 目录中搜索时,我确实看到了其中的 RScript 文件以及(R、BATCH 以及与 R 编程语言相关的其他文件)。任何帮助是极大的赞赏。干杯。
我正在开发一个包,它通过 Rscript 公开一个 R 接口(一组交互使用的函数)和一个命令行接口。第二个通过一个小的启动器工作,例如,在命令行:
Rscript mylauncher.R arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
会调用我的包的函数。我想从 R 测试几个命令行。没什么特别的,只要确保一切都运行没有错误。如果我在 R 源文件中测试这些调用:
system("Rscript mylauncher.R arg1 arg2 arg3")
Run Code Online (Sandbox Code Playgroud)
我如何确定我调用了正确的 Rscript?如果有多个 R 安装?(在我的环境中实际上就是这种情况)。另一种方法是在 R 源文件中写入:
source("mylauncher.R")
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何指定命令行(我会避免覆盖函数的技巧commandArgs,因为我还想测试命令行的正确标记化)。有人有想法吗?
谢谢!
我要读命令行参数R通过Rscript,并使用存储在其中的一些整数运算的值.默认情况下,命令行参数作为字符导入:
#!/usr/bin/env Rscript
arg <- commandArgs(trailingOnly = TRUE)
x = as.vector(arg[1])
class(x)
x
y = as.vector(arg[2])
class(y)
y
cor.test(x,y)
Run Code Online (Sandbox Code Playgroud)
这是此脚本的输出:
$ Rscript Correlation.R 3,3,2 4,8,6
[1] "character"
[1] "3,3,2"
[1] "character"
[1] "4,8,6"
Error in cor.test.default(x, y) : 'x' must be a numeric vector
Calls: cor.test -> cor.test.default
Execution halted
Run Code Online (Sandbox Code Playgroud)
如何将x和y转换为数字向量?
当您尝试在R中安装软件包并且没有默认库路径的访问权限时,R会询问您:
您要改用个人图书馆吗?
您想创建一个个人库“〜/ path”来安装软件包吗?
但是,如果您正在运行Rscript,则这些消息将不会显示,并且安装将失败。我可以预定义一个特定的路径并指示install.packages使用它,但是我不想创建一个特定于此Rscript的附加库路径。我只想使用默认的个人库。有没有办法在不需要交互的情况下强制创建个人图书馆?
我的桌面上有一个 rscript (file.r),其中包含一个函数。我需要从 Windows 命令提示符调用这个函数并将参数传递给它,我找到了这种方式,但我不明白它是如何使用的,比如它是什么意思?
我已经有了 R 的外壳,但我需要从 Windows 命令提示符执行它,而不是 R 本身
args <- commandArgs(trailingOnly = TRUE)
Run Code Online (Sandbox Code Playgroud) 我需要如何运行脚本的安排是首先使用该函数并行运行 4 个 R 脚本rstudioapi::jobRunScript()。并行运行的每个脚本不会从任何环境导入任何内容,而是将创建的数据帧导出到全局环境。我的第 5 个 R 脚本基于并行运行的 4 个 R 脚本创建的数据帧,并且第 5 个脚本也在控制台中运行。如果有一种方法可以在前 4 个 R 脚本并行运行完成后在后台而不是在控制台中运行第 5 个脚本,那就会好很多。我还试图减少整个过程的总运行时间。
尽管我能够弄清楚如何并行运行前 4 个 R 脚本,但我的任务尚未完全完成,因为我找不到如何触发运行第 5 个 R 脚本的方法。希望大家能在这里帮助我