13

私はWindowsでRを使用しているUNIXとソファの素人です。たとえば、Rセッションで(R guiで)次のように入力します。

# this is a my funny example script 
X <- 1:10
Y <- 21:30
plot(X, Y)
myfun <- function (x){
              x1 <- x^0.2
              return (x1)
             }
myfun(X)

2つの状況で、UNIXシェルでこれをどのように達成できますか?

(1)インターペッターを介してコマンドラインで直接(2)スクリプトを作成してスクリプトを実行します。

私がUNIXの素人であることを考慮してステップを提供してください。

4

4 に答える 4

25

スクリプトをという名前の単純なテキストファイルに保存すると仮定すると、プロンプトでso.R入力することにより、Linux/Unixでスクリプトを実行できます。RRに入ったら

  source('so.R')

R環境内でスクリプトを実行します(これは、so.Rファイルがこのコマンドを発行したときと同じディレクトリにあることを前提としています)。

Linux / Unixコマンドラインからスクリプトを実行するには、次のコマンドを使用します。

  R CMD BATCH so.R

R内でスクリプトを実行したときに表示されるプロットを取得しましたが、Linuxコマンドラインからは表示されないことに注意してください。すぐに表示されてから消えると思うので、プロットが表示された後に一時停止するために検索する必要があるRコマンドがあります。

于 2012-05-15T15:16:55.533 に答える
1

あなたが質問を言った方法から、あなたはおそらくLinuxマシンにSSHで接続したと思いますか?または、たとえば、通常のラップトップ/PCにUbuntuをインストールしたこと。

2番目のケースであると仮定すると、ターミナルを開いて「。」と入力しsudo apt-get install r-baseます。次に、と入力しRます。次に、次のように入力します

X <- 1:10
Y <- 21:30
plot(X, Y)
myfun <- function (x){
              x1 <- x^0.2
              return (x1)
             }
myfun(X)

あなたの質問はではなくunix対についてなので、http: //unix.stackexchange.comも試してみてください。LinuxとUNIXの違いについては多くのことが言われていますが、おそらく知っておく必要があるのは、 Ubuntuをダウンロードし、ディスクに書き込んでから、CDドライブにディスクを入れてコンピューターを再起動することだけです。linuxR

お役に立てれば。

于 2013-02-16T00:19:10.247 に答える
1

プログラムが単一のデータセットで機能する場合は、simple-rが解決策になる可能性があります。

http://code.google.com/p/simple-r/

これは、Linuxコマンドラインの一部としての単純な統計分析用に特別に設計されています。たとえば、データをプロットしたい場合は、「r-pdata.txt」がその役割を果たします。相関係数を取得するには、「rcordata.txt」で十分です。

于 2013-09-30T18:35:14.870 に答える
1

以下の例は、シェルスクリプトでRコードを実行する2つの方法を示しています。スクリプトがsource()関数を介してインタラクティブなRセッションにロードされる場合、どちらの例でも、関数を実行せずに関数を定義します。

最初の例では、他のシェルスクリプトと同じように引数を指定できますが、Rに追加のRオプションを渡すことはできません(Rscriptは引数の1つとしてRに「--args」を指定するため)。

2番目の例では、追加のRオプションを指定できますが、スクリプト引数の1つとして「--args」を指定しない限り、(無害な)警告メッセージが生成されます。特別な要件がない限り、このバージョンは避けるのが最善です。

プロトタイプ-Rscript.r

#!/usr/bin/env Rscript
# Prototype R script for use at command line in Linux, Mac OS X, UNIX

# References:
#   Manual "A Introduction to R", available via help.start() from the R Console
#   Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",

showArguments <- function(argv)  {
    print(argv)
    0
}

if ( ! interactive() )  {
    # set some error return codes
    SCRIPT_ERROR <- 10                      # see documentation for quit()
    SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1

    # Define ARGV as script path concatenated to script arguments
    ARGV <- commandArgs(FALSE)          # start with all the arguments given to R
    scriptPath <- sub("^--file=", "", grep("^--file=", ARGV, value=TRUE)) [[1]]
    ARGV <- c(scriptPath, commandArgs(TRUE))

    if (length(ARGV) < 2)   {
        cat(file=stderr(), sep="",
            "Usage: ", ARGV[[1]], " [ options ] item ...\n",
            "       Do something with item\n",
            "       See script for details\n")
        quit(save="no", status=SCRIPT_ARG_ERROR)
    }
    quit(save="no", status=showArguments(ARGV))
}

プロトタイプ-shellscript.r

#!/usr/bin/env R --slave --vanilla --quiet -f
# Prototype R script for use at command line in Linux, Mac OS X, UNIX

# References:
#   Manual "A Introduction to R", available via help.start() from the R Console
#   Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",

showArguments <- function(argv)  {
    print(argv)
    0
}

if ( ! interactive() )  {
    # set some error return codes
    SCRIPT_ERROR <- 10                      # see documentation for quit()
    SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1

    # Define ARGV as the arguments given to this script (after argument “-f”)
    ARGV <- commandArgs(FALSE)          # start with all the arguments given to R
    ARGV <- ARGV[(grep("-f", ARGV) [[1]] + 1):length(ARGV)]
    if ( any(grepl("--args", ARGV) ))   {   # remove arguments intended only for R
        ARGV <- c(ARGV[[1]], commandArgs(TRUE))
    }

    if (length(ARGV) < 2)   {
        cat(file=stderr(), sep="",
            "Usage: ", ARGV[[1]], " [ R_options ] --args [ options ] item ...\n",
            "       Do something with item\n",
            "       See script for details\n")
        quit(save="no", status=SCRIPT_ARG_ERROR)
    }
    quit(save="no", status=showArguments(ARGV))
}
于 2014-01-11T22:54:58.567 に答える