2014-07-02 7 views
12

Knitr tworzy przyjemny kod z podświetloną składnią podczas korzystania z fragmentu kodu, jak pokazano poniżej.Dosyć drukowany kod SQL z oddzielnego pliku z knitr

```sql 
SELECT column 
FROM table 
``` 

Czy można osiągnąć to samo, ale z kodem sql przechowywanym w pliku? Coś jak:

```sql 
read_chunk('mycode.sql') 
``` 

Odpowiedz

16

myślę, że można użyć wyrażenia inline R, aby go osiągnąć:

```sql 
`r paste(readLines('mycode.sql'), collapse = '\n')` 
``` 

pewnością można również zdefiniować funkcję otoki uproszczenie kodu, jeśli masz dużo SQL skrypty do włączenia, np

include_file = function(file) { 
    paste(readLines(file), collapse = '\n') 
} 
+0

Cudownie, dziękuję Yihui. Nie wiedziałem, że można użyć wbudowanego wyrażenia r w obrębie fragmentów kodu. Dzięki temu mogę zsynchronizować moją dokumentację z moim kodem. – Rickard

+0

@Rickard Nie, naprawdę nie można używać wbudowanych wyrażeń R w częściach kodu. Inline R wyrażenie tutaj działa, ponieważ '' '' sql 'nie jest traktowane jako fragment kodu w knitr. W tej chwili tylko ''' '{r *}' jest identyfikowany jako fragment kodu (nie mogę tutaj wpisywać dosłownych odsyłaczy, więc użyłem '' ', który powinien być odczytany jako backtick). –

+0

Potrącone, ponieważ to rozwiązanie nie działa dla mnie. Plik sql jest poprawnie odczytany i wyświetlony, ale nie jest sformatowany jako kod SQL. – steinbock

Powiązane problemy