Language engines
è una grande funzionalità knitr
. Possiamo usare qualsiasi lingua in knitr, incluso ma non limitato a R. Ma cosa succede se voglio usare i risultati/variabile definiti in un chunck, in un altro chunck con la stessa lingua o in un'altra lingua (opzione più sexy)?mescola variabili/risultati tra blocchi in knitr definiti in diverse lingue?
Meglio spiegare la mia idea con un po 'di codice. Qui definisco 4 blocchi, 2 in python e 2 in R.
prima cosa definire una variabile x
in python:
## I define engien path explicitly here (TODO: set it globally)
```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = 1
print x
```
## 1
Ora provate a usare x nella nuova chunck pitone:
```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = x +1
print x
```
Nessun errore, ma risultato sorprendente, sembra x è NULL qui. Ora se provo a usare x in un nuovo chunck R:
```{r fig.width=7, fig.height=6}
x +1
y = 2
```
## Error: object 'x' not found
Ho un errore. Ora se provo a usare y nel nuovo chunk R e funziona bene. il motore r può usare la variabile definita nel precedente chunck R. Nota che questo non funziona con Python.
```{r fig.width=7, fig.height=6}
y+3
```
## [1] 5
Perché c'è una differenza di comportamento tra R e Python qui? È strutturale a causa delle regole di scoping R o solo di un futuro non ancora implementato in knitr? o forse un bug?
Signore @agstudy e signori, la progettazione del motore attuale è lungi dall'essere soddisfacente e ho sicuramente bisogno di aiuto: https: // GitHub. com/yihui/runr Ho [ottenuto che Julia lavori in knitr] (https://groups.google.com/forum/#!topic/knitr/F78PBMIamwk), e immagino che Python dovrebbe essere più facile di Julia per essere incorporato in R ? L'idea di base è comunicare tramite prese o fifo. Sei il benvenuto per essere co-autore di questo pacchetto. –