2015-12-14 11 views
10

Sto usando Rstudio per il mio roba quotidiana. A volte, mi piacerebbe usare qualche python/bash per le parti in cui R non è molto bravo. Stranamente ho notato se inizio un nuovo documento RMarkdown, che il seguente codice funziona:Esecuzione di codice python/bash in Rstudio

```{r engine='python'} 
print "Hello" + "World" 
import random 
print random.random() 
``` 

python in rstudio

Rstudio mi può eseguire alcuni pitone. Questo è molto utile, ma preferibilmente sarei in grado di farlo non solo tramite la funzione markdown ma anche attraverso una console. Nello release notes è suggerito che sia disponibile il supporto per l'evidenziazione della sintassi.

Mi chiedo, esiste un metodo per connettere una nuova console a Rstudio in modo da poter eseguire anche qualche python/bash dall'IDE? Sembra certamente che Rstudio abbia un'idea di come connettersi a Python. L'obiettivo finale sarebbe quello di creare .Rmd documenti ed essere in grado di modificare/interagire con loro che hanno la seguente struttura:

# Use Case 

Connect to an api that is supported in python 

```{r engine='python', highlight=TRUE} 
data = foobar_api.get(1000) 
file_loc = open("~/data/filename.csv", "w") 
file_loc(data) 
file_loc.close() 
``` 

Then analyse with R again. 

```{r} 
df <- read.csv("~/data/filename.csv") 
summary(df) 
``` 

risposta

2

Per prima cosa è necessario impostare le opzioni knitr.

```{r} 
knitr::opts_chunk$set(engine.path = list(python = '/anaconda/bin/python')) 
``` 

Da quel punto in poi funziona.

```{python} 
import this 
``` 
1

Se si utilizza Architect o semplice Eclipse con StatET, è possibile installare i PyDev plug-in e lanciare e interagire con le console Python con la stessa facilità con le console R (e, naturalmente, c'è un ampio supporto per la modifica e l'elaborazione di file .Rmd)

+0

è dello stesso file? – cantdutchthis

1

Questo è un esempio di knitr al suo meglio, dove consente multiple language engines. Si potrebbe prendere in considerazione la modifica del file solo per questi casi in VIM, perché si può fare qualcosa di divertente che è vicino a quello che si sta chiedendo: selezionare il testo e quindi digitare:

:'<,'>!python 

da eseguire in pitone e

:<','>!R --no-save 

Per eseguire in R. Vedere le risposte a this question per ulteriori dettagli.

Quanto sopra non risolve completamente il caso d'uso, perché il testo selezionato viene sostituito dall'output del comando (a partire dalla versione R ecc. Nel caso di un semplice comando R). È tuttavia possibile inviare l'output a un buffer differente (leggi: finestra) utilizzando this vimtip.

La modalità VIM in RStudio è a dir poco eccellente (supporta anche la modalità di blocco visivo). Ma non può emulare tutto e :!python in RStudio non funzionerà. Ho spesso il documento su cui sto lavorando sia in RStudio che in VIM, e quanto sopra potrebbe essere un motivo per fare lo stesso per i documenti Rmd con lingue miste.