Pergunta sobre shell, r, linux, unix – executando r scripts ou comandos com interpretor em unix para unix-layman

13

Eu sou leigo para unix e sofar eu usando R no windows. Por exemplo eu digito seguindo na minha sessão R (em 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)

Como posso conseguir isso em shell unix, em duas situações -

(1) diretamente na linha de comando através de um interpeter (2) criando um script e um script em execução.

Por favor, forneça passo considerando eu sou leigo para unix.

Desculpe pela pergunta simples, qual é a diferença entre linux e unix R? Eu acredito que podemos rodar o R ​​no unix SHRram
Talvez você deva usar R para linux? Burton Samograd
Eu sugiro que você passe peloR documentação. Lá você tem boas instruções parainstalação e por exemploscripting. Maehler
O que você tentou? R deve instalar bem em unix ou linux, e você pode acessá-lo através da linha de comando comR. Você também pode ver algumas das excelentes guis disponíveis (eu sugeririaRStudio como um excelente ponto de partida). Finalmente, executar um script pode ser feito facilmente. Muitas vezes você usaR CMD BATCH script.R mas existem muitas alternativas e opções bem documentadas. Justin

Sua resposta

4   a resposta
1

o simple-r poderá ser a solução:

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

Ele é especialmente projetado para análise estatística simples como parte da linha de comando do Linux. Por exemplo, se alguém quiser plotar alguns dados, 'r -p data.txt' fará o trabalho; para obter o coeficiente de correlação: 'r cor data.txt' será suficiente.

Na verdade, andamos / usr / bin / r alguns anos antes para o nosso projeto menor, que é um pouco mais genérico. Dirk Eddelbuettel
1

script de shell. Ambos os exemplos também definirão funções sem executá-las, se os scripts forem carregados em uma sessão R interativa através da função source ().

O primeiro exemplo permite que você forneça argumentos como faria com qualquer outro script de shell, mas não passará opções-R adicionais para R (porque Rscript fornece "--args" para R como um dos argumentos).

O segundo exemplo permite que você forneça opções-R adicionais, mas gera mensagens de aviso (inofensivas), a menos que você forneça "--args" como um dos argumentos do script. Essa versão é melhor evitada, a menos que você tenha requisitos especiais.

prototype-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))
}

protótipo-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))
}
1

vez SSH em uma máquina linux? Ou que você instalou o Ubuntu, por exemplo, no seu laptop / computador de sempre.

Supondo que seja o segundo caso: abra um terminal e digitesudo apt-get install r-base. Então digiteR. Então digite

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

Desde a sua pergunta é sobreunix versuslinux ao invés deRvocê também pode tentarhttp://unix.stackexchange.com. Há muito a ser dito sobre as diferenças entre linux e unix, mas tudo o que você provavelmente precisa saber é:download do Ubuntu, grave-o em um disco e reinicie o computador com o disco na unidade de CD.

Espero que isto ajude.

Obrigado @DirkEddelbuettel. Fixo. isomorphismes
Isto éminúsculas R:sudo apt-get install r-base como todos os nomes de pacotes estão em minúsculas. Dirk Eddelbuettel
25

nomeso.R, você pode rodar em Linux / Unix digitandoR no prompt. Uma vez em R entre

  source('so.R')

para executar o script dentro do ambiente R (isso supõe que o arquivo so.R está no mesmo diretório em que você está quando você emite este comando).

Para executar o script na linha de comando do Linux / Unix, use o seguinte comando:

  R CMD BATCH so.R

Note que eu tenho o enredo para mostrar quando eu corri o script dentro de R, mas a partir da linha de comando do Linux não aparece. Eu suspeito que ele seja exibido rapidamente e, em seguida, vai embora, então haverá um comando R que você terá que olhar para cima para fazê-lo pausar após exibir o gráfico.

Você pode querer considerar o script real lideradoRscript (vem com R) ou nosso mais velhor (do nosso pacote littler). O uso deR CMD BATCH é preterido em favor do Rscript. Se você tiver, r é legal também. Dirk Eddelbuettel

Perguntas relacionadas