使用bash脚本运行R命令

时间:2015-07-03 07:57:08

标签: r command

我有以下命令用于在R中绘制图。主要文本文件是cross_correlation.csv。

如何将它放在bash脚本中,这样当我在终端上启动它时,R命令将执行它们的工作并完成(就像所有其他shell脚本一样)。

07-03 13:04:23.904: E/AndEngine(7060): MainActivity.onCreateGame failed. @(Thread: 'GLThread 216')
07-03 13:04:23.904: E/AndEngine(7060): java.lang.NullPointerException
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.opengl.texture.region.TextureRegionFactory.extractFromTexture(TextureRegionFactory.java:50)
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.opengl.texture.region.TextureRegionFactory.extractFromTexture(TextureRegionFactory.java:42)
07-03 13:04:23.904: E/AndEngine(7060):  at com.example.testnew.MainActivity.onCreateResources(MainActivity.java:144)
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.ui.activity.SimpleBaseGameActivity.onCreateResources(SimpleBaseGameActivity.java:43)
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.ui.activity.BaseGameActivity.onCreateGame(BaseGameActivity.java:183)
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.ui.activity.BaseGameActivity.onSurfaceCreated(BaseGameActivity.java:112)
07-03 13:04:23.904: E/AndEngine(7060):  at org.andengine.opengl.view.EngineRenderer.onSurfaceCreated(EngineRenderer.java:80)
07-03 13:04:23.904: E/AndEngine(7060):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1494)
07-03 13:04:23.904: E/AndEngine(7060):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

1 个答案:

答案 0 :(得分:4)

如果安装了R,则还应安装程序Rscript,该程序可用于运行R脚本:

Rscript myscript.r

所以你可以将这一行放在一个bash脚本中:

#!/bin/bash

Rscript myscript1.r
Rscript myscript2.r
# other bash commands

这通常是在bash脚本中运行R脚本的最简单方法。

如果您想使脚本可执行,以便您可以通过键入./myscript.r来运行它,则需要输入以下内容找出Rscript的安装位置:

which Rscript
# /usr/bin/Rscript

然后您的myscript.r将会是这样的

#!/usr/bin/Rscript

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()

这个方法在this question中有解释,也可能会给你一些想法。