[R-br] Render {rmarkdown} não funciona em emacs

walmes . walmeszeviani em gmail.com
Segunda Março 16 14:28:12 BRT 2015


Eu uso o Emacs para edição de documentos R. Para compilar eu abro um
terminal e dou instrução lá. Antes eu abria um terminal do linux e chamava
o R dentro. Hoje já uso um shell script que facilita bem mais as coisas.
Segue o shell script. Dentro tem o comentário logo no topo de como fazer o
link simbólico.

## COMEÇA ARQUIVO render

#!/bin/bash

# Seguir as intruções aqui
# https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md para criar
# links simbólicos para o pandoc. No caso, tem-se que fazer
#   $ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc /usr/local/bin
#   $ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc-citeproc /usr/local/bin
# para poder usar esse bash.

#-----------------------------------------------------------------------------
# Compilar *.Rmd para *.html com rmarkdown::render.
#                                                               Walmes
Zeviani
#-----------------------------------------------------------------------------

echo
echo
"============================================================================="
echo "Compilando *.Rmd para *.html com rmarkdown::render."
echo "                                                               Walmes
Zeviani"
echo
"============================================================================="
echo

##-----------------------------------------------------------------------------
##
http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-options

Options=$@
Optnum=$#

_usage() {
    #--------------------------------------------
    # Shows how use.
cat <<EOF
render $Options
$*
        Usage: render <[options]> file

          file       Is a filename with extension *.Rmd.

        Options:
                -h   --help           Show this message
                -p   --purl           To purl the file

EOF
}
if [ $# = 0 ]; then _usage; fi

#-----------------------------------------------------------------------------
# NOTE: This requires GNU getopt. On Mac OS X and FreeBSD, you have to
# install this separately.

TEMP=`getopt -o hp --long help,purl -n 'render' -- "$@"`
if [ $? != 0 ] ; then echo "Terminating." >&2 ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

PURL=
while true; do
    case "$1" in
        -h | --help )
            _usage
            break
            exit 1
            ;;
        -p | --purl )
            PURL=true
            shift
            ;;
        -- )
            shift; break ;;
        * )
            _usage
            break
            exit 1
            ;;
    esac
done

INPUT=$1
case "$INPUT" in
    *.Rmd )
        echo; echo "Running rmarkdown::render(\"$INPUT\")."; echo
        Rscript -e "require(knitr); require(rmarkdown); render(\"$INPUT\")"
        ;;
    *)
        echo "The file $INPUT has a non supported file extension."
        exit 1
        ;;
esac

if [[ "$PURL" == "true" ]]
then
    purl -n $INPUT
fi

##-----------------------------------------------------------------------------

## Para fazer em batelada.
## for file in `ls *.Rmd`
## do
##    rmarkdownRender -p $file
## done

​
​## FIM DO ARQUIVO render​


Esse arquivo "render" você pode deixar na sua pasta "/bin" do linux. Tem
que dar permissão de execussão. Suponha que o arquivo seja criado num lugar
qualquer então execute esses passos.

$ ls -l render               ## Lista permissões.
$ chmod +x render            ## Permite execução.
$ ls -l render               ## Lista novamente.
$ sudo cp render /bin        ## Copia para a pasta /bin
$ render nome_do_arquivo.Rmd ## Modo de usar.

Eu na verdade prefiro deixar meus shell numa pasta própria ao inves da
/bin. Vamos supor que seja a /home/bashs. Você só precisa adicionar o PATH
ao conjunto de paths monitorados. Se faz isso incluindo a seguinte linha
dentro do seu arquivo /home/walmes/.bashrc

export PATH=$PATH:/home/walmes/bashs/

À disposição.
Walmes.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150316/cfdffc5f/attachment.html>


Mais detalhes sobre a lista de discussão R-br