Language engines
to świetna funkcja knitr
. Możemy używać dowolnych języków w dzierżawie, w tym między innymi R. Ale co jeśli chcę użyć wyników/zmiennych zdefiniowanych w jednym chunck, w innym chunck albo w tym samym języku lub w innym języku (bardziej sexy opcja)?miksować zmienne/wyniki pomiędzy fragmentami w knitr zdefiniowanymi w różnych językach?
Lepiej wyjaśnić mój pomysł za pomocą kodu. Tutaj definiuję 4 porcje, 2 w python i 2 w R.
Najpierw zdefiniować zmienną x
w Pythonie:
## I define engien path explicitly here (TODO: set it globally)
```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = 1
print x
```
## 1
Teraz Spróbuj użyć X w nowym python chunck:
```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = x +1
print x
```
Brak błędu ale niesamowity wynik, wygląda jak x jest NULL tutaj. Teraz jeśli spróbuję użyć x w nowym R chunck:
```{r fig.width=7, fig.height=6}
x +1
y = 2
```
## Error: object 'x' not found
Wystąpił błąd. Teraz jeśli spróbuję użyć y w nowej porcji R i działa dobrze. silnik r może używać zmiennej zdefiniowanej w poprzednim R chunck. Uwaga: to nie działa z pythonem.
```{r fig.width=7, fig.height=6}
y+3
```
## [1] 5
Dlaczego występuje różnica w zachowaniu między R i Pythonem? Czy jest to strukturalne ze względu na reguły ustalania R lub tylko przyszłość, która nie została jeszcze zaimplementowana w knitr? a może błąd?
@agstudy Panie i panowie, obecna konstrukcja silnika jest daleki od zadowalającego, a ja na pewno potrzebujesz pomocy: https: // github. com/yihui/runr Mam [mam Julię pracującą w dziale] (https://groups.google.com/forum/#!topic/knitr/F78PBMIamwk), i domyślam się, że Python powinien być łatwiejszy niż Julia do włączenia do R ? Podstawową ideą jest komunikowanie się przez gniazda lub fifo. Serdecznie zapraszamy do współautora tego pakietu. –