Narzędzia użytkownika

Narzędzia witryny


markdown_message

Używanie funkcji message() we wstawkach R w rmarkdown

Używanie funkcji message(), choć jest skądinąd dobrą praktyką przy pisaniu funkcji (bo osoba je wywołująca - w szczególności w ramach innych funkcji - może przy pomocy funkcji suppressMessages() zablokować ich wyświetlanie), we wstawkach R w rmarkdown może dawać niepożądane rezultaty. Jeśli w ramach wstawki (chunk) jednocześnie generujesz kodem tekst, który ma być pokazany użytkownikowi oraz wykresy, to użycie funkcji message() do pokazywania tekstu z dużym prawdopodobieństwem doprowadzi do zaburzenia kolejności pomiędzy tekstem a wykresami (już na poziomie generowania pliku .md). Zapewne ma to jakiś związek z tym, że message() zwraca wynik działania do stderr(), a nie do stdout().

W związku z tym we wstawkach R w ramach rmarkdown zalecamy zastępowanie funkcji message() funkcją cat() (cat() zwraca wynik działania do stdout() i nie powoduje problemów).

Warto przy tym pamiętać o różnicach pomiędzy message() a cut():

  • Znak końca linii: message() dodaje automatycznie na końcu zwracanego tekstu, cut() nie dodaje i jeśli chcemy go mieć, to musimy dopisać go sami.
  • Separator używany do łączenia ciągów znaków podanych jako argumenty (gdy podano kilka): message() łączy ciągi bez separatora (i nie można tego zmienić), cut() domyślnie używa jako separatora spacji (ale można mu podać inny, parametrem sep).
markdown_message.txt · ostatnio zmienione: 2015/05/20 10:07 przez t.zoltak