Jeśli uruchomić skrypt R w ramach linii poleceń (faktycznie biegnę że z wywołaniem w VBA), jak mogę wyjście jakikolwiek błąd/komunikaty ostrzegawcze do txt plik?Wyjście błąd/ostrzeżenie log (plik txt) po uruchomieniu skryptu R w ramach linii poleceń
Odpowiedz
Można użyć sink()
przekazywać wiadomości, jak również ostrzeżenia do pliku. Sztuką jest, aby ustawić argument type="message"
:
Oto przykład dostosowane z pomocą dla ?sink
:
setwd(tempdir())
## capture messages and errors to a file.
zz <- file("all.Rout", open="wt")
sink(zz, type="message")
try(log("a"))
## reset message sink and close the file connection
sink(type="message")
close(zz)
## Display the log file
readLines("all.Rout")
[1] "Error in log(\"a\") : Non-numeric argument to mathematical function"
Świetne rzeczy, dziękuję! – Joyce
Jak jednak zamknąć połączenie z plikiem dziennika? Próbowałem sink(), ale gdy chcę usunąć plik dziennika, nie mogę go usunąć, ponieważ wydaje się, że nadal jest połączenie. Dopiero po zamknięciu mojego R mogę to usunąć. Jak mam zamknąć połączenie? – Joyce
Jest tak dlatego, że w oryginalnej odpowiedzi zlew nie został zakończony za pomocą 'type =" message "', a połączenie nie zostało zamknięte. (Naprawiono w zaktualizowanej odpowiedzi) – Jthorpe
Aby zamknąć połączenie z pliku dziennika trzeba użyć sink(type="message")
zamiast sink()
a następnie close(zz)
.
(Nie mam wystarczającej reputacji, aby użyć funkcji dodawania komentarza)
Co powiecie na plik yourprogram.exe> anoutputfile.txt? Chociaż to przechwytuje wszystko. On * nix możesz skierować stderr, nie wiesz o Win *. Zobacz http://stackoverflow.com/questions/1109017/how-do-you-print-to-stderr-in-r – Pete855217
Można ewentualnie użyć 'sink()' – Andrie
Dziękuję. Próbowałem wyszukiwać w Internecie, jak korzystać z zlewu w R, ale nieco mylić, jak wydrukować komunikat o błędzie/ostrzeżenie w moim przypadku. Czy mógłbyś dać mi szybki przykład, jak to zrobić? Jeszcze raz dziękuję. – Joyce