2016-12-17 25 views
5

W moim pakiecie htmlTable używam base::interactive w celu ustalenia, czy dane wyjściowe powinny być wyprowadzane jako łańcuch znaków, czy do okna przeglądarki (tutaj jest code). Niestety interactive() zwraca TRUE podczas pracy w ramach RStudio notebook, jaki jest równoważny sposób określania środowiska wykonawczego w notebooku?Ustal, czy skrypt jest uruchomiony w notatniku RStudio

Próbowałem już ls() i search(), ale wyglądają identycznie, niezależnie od środowiska. Mam również funkcję S3 knit_print.htmlTable, która jest wywoływana przez dokumenty default for knitr, ale wydaje się, że nie jest poprawnie wykrywana w środowisku notebooka.

+0

Sprawdź, czy testowanie 'knitr :: opts_current $ get ('results')' nie jest 'NULL'. Jest ustawiony w notatniku lub R Markdown, ale nie w prostym kontekście skryptu (przynajmniej w moich systemach). – hrbrmstr

+0

@hrbrmstr dzięki, niestety nie działa, gdy działa tylko kawałek. Idealnie chciałbym coś oficjalnego dla opiekunów pakietów z RStudio, ale nie byłem w stanie znaleźć nic bardziej użytecznego. –

+0

Hrm. Uruchomiłem go tylko w kawałku i działało dobrze dla mnie. – hrbrmstr

Odpowiedz

0

Więc najlepszym rozwiązaniem, które znalazłem tak daleko jest do realizacji detektora kontekstowego za pomocą RStudio API:

prIsNotebook <- function() { 
    if (!rstudioapi::isAvailable()) { 
    return(FALSE) 
    } 

    ctxt <- rstudioapi::getActiveDocumentContext() 
    if (grepl("\\.Rmd$", ctxt$path)) { 
    return(TRUE) 
    } 

    # Look for html_notebook within the header if the file hasn't been saved 
    contents <- ctxt$contents 
    header <- grep("^---$", contents) 
    if (length(header) == 2) { 
    return(any(grepl("html_notebook$", 
        contents[min(header) : max(header)]))) 
    } 

    return(FALSE) 
} 

nie sprawdzi to jako odpowiedź, ponieważ to bardziej hack niż prawdziwe rozwiązanie.

+0

Mam RNotebooki, które czasami również łączę z Wordem lub PDFem, a nawet od czasu do czasu HTML - dlatego też mam WSZYSTKIE z nich jako formaty wyjściowe w sekcji nagłówka YAML :-( – dsz