相关疑难解决方法(0)

在命令行(终端)上使用R脚本的最佳方法是什么?

使用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不会在一个或另一个上失败的可能性,并且让我的心脏受到伤害.

我错过了一些更好的方法吗?

bash r

112
推荐指数
5
解决办法
12万
查看次数

Rscript和littler之间的区别

......除了这个事实,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 …

scripting r execution-time

36
推荐指数
1
解决办法
4318
查看次数

Python中的差异基因表达分析

似乎RNA-Seq的大多数差异基因表达包都是用R.写的.

Examples include:

- edgeR
- limma
- DESeq
Run Code Online (Sandbox Code Playgroud)

是否有任何类似(易于使用)的软件包可用于Python,或者是否已移植任何R软件包?

我能找到的最好的是:

但我真的不想使用rpy2(第一个链接).第二个环节可能就是我要开始的地方,但我首先要确保我不会重新发明轮子.

python r bioinformatics rpy2

16
推荐指数
0
解决办法
3368
查看次数

在Windows中从cmd运行R.

我正在尝试安装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路径): …

r

8
推荐指数
2
解决办法
1万
查看次数

从Rscript以交互方式运行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)

r rscript r-markdown shiny

7
推荐指数
1
解决办法
1403
查看次数

从SSIS包执行R脚本

我想从SSIS包中执行R代码.如何添加执行R代码的数据控制步骤?SSIS仅支持vb.net和asp.net.

SSIS有许多可用的数据转换,但R在数据处理方面非常友好.

我想从SSIS脚本或其他方式运行R代码.基本上,我正在尝试将R集成到ETL过程中.

我想从CSV文件中提取数据(E).

在R中转换(T)它并在Microsoft数据库中加载(L)它.是否可以通过使用SSIS数据控制项执行R脚本来在SSIS包中完成此工作流程?谢谢!

ssis r

6
推荐指数
1
解决办法
9432
查看次数

无法从java程序执行R脚本?

我在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变量中,然后我执行下面的代码,它根本不起作用.我传递pathclient_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)

java bash runtime r processbuilder

5
推荐指数
1
解决办法
1258
查看次数

R和C++之间的通信

我有一个用C++编写的程序,它计算似然函数的值,它依赖于大量数据.我希望能够从R调用函数来请求函数值(计算将花费很多时间在R中,并且C++程序已经很长时间来改变它,它大约是150K行代码).

我可以这样做来请求一个值,但随后C++应用程序终止,我必须重新启动它并再次加载所有数据,(这样做.c()).加载需要10-30秒,具体取决于似然函数和数据的模型,我在想是否有办法让C++应用程序保持活动状态,等待函数值的请求,所以我没有将所有数据读回内存.已经在C++应用程序中计算一个函数值需要大约半秒钟,这对于C++来说非常长.

我正在考虑使用pipe()这个,并问你这是否是一个可行的选择,还是我应该使用其他方法?用rcpp可以做到这一点吗?

我这样做是为了测试这个函数上R的最小化算法.

c++ communication r pipe rcpp

4
推荐指数
1
解决办法
876
查看次数

使用 bash 脚本运行 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)

command r

4
推荐指数
1
解决办法
2万
查看次数

如何在不打开 R 或 RStudio 的情况下运行 R 脚本?

谢谢你的时间。

我有一个更普遍的问题,与业务用例相关。

我创建了一个 R 脚本,它接受一个 Excel 文件,检查某些条件,然后导出另一个 Excel 文件。

我为特定用例以及我的组织中某个团队的其他人员创建了这个。

我组织中的其他人希望能够自己运行这个 R 脚本,而不必每次他们想要运行它时都联系我。他们可能每天在整个团队中运行几次以上。

就我而言,我不希望团队成员每次想要运行脚本时都必须打开 R。从他们的角度来看,这似乎不太用户友好,我更希望让他们的体验保持轻松。

所以这是我的问题:我是否可以找到或创建任何应用程序,团队成员可以使用它来运行我的 R 脚本,而无需显式使用 R?

我已经做了很多谷歌搜索。我看到的一个解决方案是创建该文件的可执行版本,但我相信这仍然很棘手,因为这将涉及自定义每台团队成员的计算机。

我还想RShiny也许能填补这个空白?但我现在对RShiny还不熟悉,也不知道它到底能做什么。

感谢您提出的任何其他建议。

r

1
推荐指数
1
解决办法
8769
查看次数

通过Unix shell脚本运行R程序

我在R studio中调用R函数,如下所示

source("test.R)
test()
Run Code Online (Sandbox Code Playgroud)

我现在想用Unix shell脚本调用它.

请让我知道如何实现这一目标.谢谢.

r

0
推荐指数
2
解决办法
389
查看次数