Гистограммы в SAS markdown не выводятся в PDF - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь запустить SASmarkdown в файле Rmarkdown, связанном с PDF. Я могу получить распечатанные результаты так, как ожидается, но когда я запускаю приведенный ниже код, он открывает графики в SAS и ничего не включается в вывод PDF. Я не могу найти вариант, чтобы заставить это исправить себя.

```{r, engine='sas', engine.path=saspath, engine.opts=sasopts}
/* check for outliers */
proc univariate data=capstone.bigbostonc noprint;
   title1;
    var tract lon lat crim zn indus chas nox rm age dis rad 
        tax ptratio b lstat bostontown;
    histogram;
run;
```

Обратите внимание, если я изменю двигатель на 'sashtml' и вяжу на HTML, я получаю графики, как и ожидалось, просто не с engine='sas' вязать в PDF.

1 Ответ

2 голосов
/ 26 марта 2020

Причина, по которой вы не видите гистограммы в выходных PDF-файлах, двойная:

  1. SASmarkdown поддерживает только выходные данные LISTING и HTML (см. Ссылку ниже).
  2. Когда вы используете опцию noprint в своем выражении proc univariate, вы удаляете вывод списка SAS.

Элемент (1) следует из расширенной документации пакета (ссылка указана в документация пакета): https://www.ssc.wisc.edu/~hemken/SASworkshops/Markdown/SASmdpackage.html

где написано ( полужирный добавлен мной для выделения соответствующих точек):

Когда вы загружаете пакет SASmarkdown, шесть модулей SAS определены и готовы к использованию. Все они запускают ваш код SAS, но возвращают различный вывод в ваш документ. Это

sas - это возвращает код SAS, который вы запустили, и обычный ("перечисление") вывод

saslog - это возвращает журнал SAS вместо вашего кода, и обычный вывод SAS

sas html - возвращает код SAS и вывод SAS HTML

sashtmllog - возвращает журнал SAS и вывод SAS HTML

sas html5 - возвращает код SAS и вывод SAS HTML со встроенной графикой

sashtml5log - возвращает журнал SAS и вывод SAS HTML

Что касается (2), учитывая, что вы не можете отправить HTML вывод в файл PDF, я бы сказал, что единственный вариант, который у вас есть, чтобы включить какой-либо график с распределением ваших переменных в вывод PDF, - это генерировать участки в выводе листинга. В этом случае вместо гистограммы вы увидите график стволовых и листьев.

Для этого вы можете сделать следующее:

  • отключить ods graphics, используя инструкцию ods graphics off;,
  • добавить параметр plots в оператор proc univariate.

Эта настройка следует из документации PROC UNIVARIATE:

УЧАСТКИ | PLOT <()> создает панель графиков для каждой переменной анализа. Если включена графика ODS, панель содержит горизонтальную гистограмму, коробочную диаграмму и диаграмму нормальной вероятности. В противном случае процедура создает график на основе ствола и листа (или горизонтальную гистограмму), блок-диаграмму и график с нормальной вероятностью с использованием вывода на строчный принтер.

Я использовал следующий код для проверьте это, и все заработало, как и ожидалось:

library(knitr)
library(rmarkdown)

indoc <- '
---
title: "Stem and leaf plot generated in LISTING output"
output: pdf_document
---

# Setup
```{r}
library(SASmarkdown)
sasexe <- "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe"
sasopts <- "-nosplash -ls 75"
```

```{r SteamAndLeafPlots, engine="sas", engine.path=sasexe, engine.opts=sasopts}
ods graphics off;
proc univariate data=sashelp.class plots;
  var age;
run;
ods graphics on;
```
'

knitr::knit(text=indoc, output="test.md")
rmarkdown::render("test.md")

Частичный вывод PDF показан ниже:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...