使用R脚本从命令行执行简单绘图非常方便.但是,从bash脚本运行R并不方便.理想可能是这样的
#!/path/to/R
...
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/bin/env R
...
Run Code Online (Sandbox Code Playgroud)
但我无法完成其中任何一项工作.
另一个选择是将脚本纯粹保存在R中,例如script.R
,并使用R --file=script.R
或类似地调用它.但是,有时脚本会依赖于模糊的命令行开关,此时代码的一部分存在于脚本之外.例如:通过本地.Rprofile将事物从bash偷偷带入R中,所需的开关就是一切--vanilla
意味着除外--no-init-file
.
另一种选择是用于存储R标志的bash脚本,并且可以无痛地执行,然后调用R脚本.问题是,这意味着单个程序被分成两个文件,现在必须保持同步,一起转移到新机器等.
我目前最鄙视的选项是将R嵌入到bash脚本中:
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Run Code Online (Sandbox Code Playgroud)
一切都在一个文件中.它是可执行的,可以轻松处理参数.问题是像这样结合bash和R几乎消除了任何IDE不会在一个或另一个上失败的可能性,并且让我的心脏受到伤害.
我错过了一些更好的方法吗?
......除了这个事实,RSCRIPT被调用,#!/usr/bin/env Rscript
并利特勒用#!/usr/local/bin/r
在脚本文件的第一行(我的系统上).我发现执行速度存在某些差异(似乎littler有点慢).
我创建了两个虚拟脚本,每次运行1000次并比较平均执行时间.
这是Rscript文件:
#!/usr/bin/env Rscript
btime <- proc.time()
x <- rnorm(100)
print(x)
print(plot(x))
etime <- proc.time()
tm <- etime - btime
sink(file = "rscript.r.out", append = TRUE)
cat(paste(tm[1:3], collapse = ";"), "\n")
sink()
print(tm)
Run Code Online (Sandbox Code Playgroud)
这是更小的文件:
#!/usr/local/bin/r
btime <- proc.time()
x <- rnorm(100)
print(x)
print(plot(x))
etime <- proc.time()
tm <- etime - btime
sink(file = "little.r.out", append = TRUE)
cat(paste(tm[1:3], collapse = ";"), "\n")
sink()
print(tm)
Run Code Online (Sandbox Code Playgroud)
如您所见,它们几乎相同(第一行和接收器文件参数不同).输出被sink
编辑到文本文件,因此导入R中read.table …
似乎RNA-Seq的大多数差异基因表达包都是用R.写的.
Examples include:
- edgeR
- limma
- DESeq
Run Code Online (Sandbox Code Playgroud)
是否有任何类似(易于使用)的软件包可用于Python,或者是否已移植任何R软件包?
我能找到的最好的是:
但我真的不想使用rpy2(第一个链接).第二个环节可能就是我要开始的地方,但我首先要确保我不会重新发明轮子.
我正在尝试安装rtools,以便我可以安装另一个软件包(Google的causalimpact),并且该过程表明我的R路径环境有问题.
主要问题
我无法R
从cmd窗口运行.
预期的行为是在下面输出并给出>
提示:
R version 3.1.1 (blah blah)
...
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
Run Code Online (Sandbox Code Playgroud)
但实际结果是:
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
附加信息
然而Rcmd
,我可以从cmd 运行和Rgui
(除了之外R
)没有错误.
Where R
打印输出 C:\Program Files\R\R-3.1.1\bin\x64\R.exe
Where Rcmd
打印输出 C:\Program Files\R\R-3.1.1\bin\x64\Rcmd.exe
Where Rgui
打印输出 C:\Program Files\R\R-3.1.1\bin\x64\Rgui.exe
返回指向其各自exe文件的相同路径.
这显然是我的全局环境路径的问题,但我不明白为什么它会产生这个错误
路径看起来像(最后一行的R路径): …
我正在尝试从Rscript启动一个闪亮的应用程序或交互式.Rmd文档.但是,我得到的只是一条信息
听http : //127.0.0.1:...
我相信这是因为R正在以交互模式运行(关于此的另一篇文章).如何编写正确的Rscript以便以下任何一个都能正常工作?
#!/usr/bin/Rscript
## This
library(shiny)
runApp(appDir = "../app")
## Or this
## rmarkdown::run("Main.Rmd")
Run Code Online (Sandbox Code Playgroud) 我想从SSIS包中执行R代码.如何添加执行R代码的数据控制步骤?SSIS仅支持vb.net和asp.net.
SSIS有许多可用的数据转换,但R在数据处理方面非常友好.
我想从SSIS脚本或其他方式运行R代码.基本上,我正在尝试将R集成到ETL过程中.
我想从CSV文件中提取数据(E).
在R中转换(T)它并在Microsoft数据库中加载(L)它.是否可以通过使用SSIS数据控制项执行R脚本来在SSIS包中完成此工作流程?谢谢!
我在String变量中有一个Rscript,我想从Java程序执行它并将一些变量传递给它.如果我独立执行该R脚本,它可以正常工作.我通过使用Python程序将所有R脚本转换为一行,如下所示:
import json
jsonstr = json.dumps({"script": """\
#!/usr/bin/Rscript
# read the data file
library('jsonlite')
library('rpart')
args <- as.list(Sys.getenv(c(
"path",
"client_users")))
if (args[["path"]]==""){
args[["path"]] <- "."
}
# other stuff here
# other stuff here
"""})
print jsonstr
Run Code Online (Sandbox Code Playgroud)
我使用打印出来的字符串并将其存储在String变量中,然后我执行下面的代码,它根本不起作用.我传递path
和client_users
变量到上面的R脚本.
public static void main(String[] args) throws IOException, InterruptedException {
// this is your script in a string
// String script = "#!/bin/bash\n\necho \"Hello World\"\n\n readonly PARAM1=$param1\n echo $PARAM1\n\nreadonly PARAM2=$param2\n echo $PARAM2\n\n";
String script = "above R Script here"; …
Run Code Online (Sandbox Code Playgroud) 我有一个用C++编写的程序,它计算似然函数的值,它依赖于大量数据.我希望能够从R调用函数来请求函数值(计算将花费很多时间在R中,并且C++程序已经很长时间来改变它,它大约是150K行代码).
我可以这样做来请求一个值,但随后C++应用程序终止,我必须重新启动它并再次加载所有数据,(这样做.c()
).加载需要10-30秒,具体取决于似然函数和数据的模型,我在想是否有办法让C++应用程序保持活动状态,等待函数值的请求,所以我没有将所有数据读回内存.已经在C++应用程序中计算一个函数值需要大约半秒钟,这对于C++来说非常长.
我正在考虑使用pipe()
这个,并问你这是否是一个可行的选择,还是我应该使用其他方法?用rcpp可以做到这一点吗?
我这样做是为了测试这个函数上R的最小化算法.
我有下面的命令用于在 R 中制作绘图。主要的文本文件是 cross_correlation.csv。
我怎样才能把它放在 bash 脚本中,这样当我在终端上启动它时,R 命令将执行它们的工作并完成(像所有其他 shell 脚本一样)。
cross_correlation <- read.table(file.choose(), header=F, sep="\t")
barplot(cross_correlation$V3)
dev.copy(png,"cc.png",width=8,height=6,units="in",res=100)
dev.off()
hist(cross_correlation$V3, breaks=15, prob=T)
dev.copy(png,"hist_cc.png",width=8,height=6,units="in",res=100)
dev.off()
Run Code Online (Sandbox Code Playgroud) 谢谢你的时间。
我有一个更普遍的问题,与业务用例相关。
我创建了一个 R 脚本,它接受一个 Excel 文件,检查某些条件,然后导出另一个 Excel 文件。
我为特定用例以及我的组织中某个团队的其他人员创建了这个。
我组织中的其他人希望能够自己运行这个 R 脚本,而不必每次他们想要运行它时都联系我。他们可能每天在整个团队中运行几次以上。
就我而言,我不希望团队成员每次想要运行脚本时都必须打开 R。从他们的角度来看,这似乎不太用户友好,我更希望让他们的体验保持轻松。
所以这是我的问题:我是否可以找到或创建任何应用程序,团队成员可以使用它来运行我的 R 脚本,而无需显式使用 R?
我已经做了很多谷歌搜索。我看到的一个解决方案是创建该文件的可执行版本,但我相信这仍然很棘手,因为这将涉及自定义每台团队成员的计算机。
我还想RShiny也许能填补这个空白?但我现在对RShiny还不熟悉,也不知道它到底能做什么。
感谢您提出的任何其他建议。
我在R studio中调用R函数,如下所示
source("test.R)
test()
Run Code Online (Sandbox Code Playgroud)
我现在想用Unix shell脚本调用它.
请让我知道如何实现这一目标.谢谢.