2015-07-09 2 views
1

Я собираю небольшой учебник с использованием R Markdown. Я хочу, чтобы включать в себя следующее:Как включить строку, содержащую ошибку в R markdown

Это, как мы создаем вектор в R:

{r} x <- c(1,2,3,4,5) x

Нам нужно использовать оператор с(), чтобы сделать это; если мы не получим ошибку, как показано ниже:

{r} x <- (1,2,3,4,5)

Я хочу, чтобы показать сообщение об ошибке, что R обычно дают бы, если бы я попытался создать вектор без с(), а именно

. «Ошибка: неожиданный„“в„х < - (1,“

Однако, когда я вязать уценки он останавливается на строке, содержащей ошибку Итак, как же я намеренно включают строку с ошибкой в нем, чтобы продемонстрировать ошибку?

Спасибо.

ответ

2

Попробуйте

```{r, error = TRUE} 
x <- (1, 2, 3, 4, 5) 
``` 

Обновление до knitr изменилось поведение по умолчанию опции error от TRUE до FALSE. Вам нужно либо установить error = TRUE в каждом фрагменте, где вы хотите, либо использовать opts_chunk$set(error = TRUE) в начале вашего скрипта.

+0

Я не уверен, является ли это изменение в 'knitr', или тот факт, что RStudio использует' rmarkdown :: render' на верхнем уровне, который изменяет значения по умолчанию ...? –

+0

Вы правы. Спасибо за разъяснения. (http://rmarkdown.rstudio.com/authoring_migrating_from_v1.html) – Benjamin

+0

Спасибо. Однако, пробовав каждый вариант, который вы предлагаете, я все равно получаю ту же ошибку: Выход из строк 63-64 (M1.2_DataInR.Rmd) Ошибка в анализе (текст = x, srcfile = src): : 1: 8: неожиданный ',' 1: x <- (1,^Звонки: ... оценить -> parse_all -> parse_all.character -> parse Выполнение остановлено. Я также попробовал следующий код в верхней части моего Rmd script: '' '{r setup, echo = FALSE} knitr :: opts_chunk $ set (error = TRUE)' '' как указано в руководстве по миграции, приведенном выше, но с тем же результатом – Arjun

1

Я не уверен, что ответ Вениамина будет работать. Не работает для меня, по крайней мере, потому что ошибка является синтаксической ошибкой.

У меня есть два несовершенных решения этой проблемы. Вы можете «взломать» что-то, что выглядит правильно, не оценивая код с синтаксической ошибкой, а затем с куском под которым оценивается и просто отображается сообщение об ошибке.

```{r, eval = FALSE} 
x <- (1,2,3,4,5) 
``` 
```{r, echo = FALSE} 
cat("Error: unexpected \',\' in \'try(x <- (1,\'") 
``` 

Или вы можете запустить код в другом двигателе. Тем не менее, он также дает сообщение о том, что выполнение остановлено, что я не могу решить, как удалить.

```{r, engine='Rscript', error=TRUE} 
x <- (1, 2, 3, 4, 5) 
``` 
+0

Ваше первое решение работает как шарм , спасибо большое! – Arjun

+0

Я снова отредактировал код - это должно дать еще лучший результат. В предыдущей версии появилось другое сообщение об ошибке, которое вы действительно увидите. –

+0

Да, я заметил это - однако, так как я вставляю в сообщение об ошибке дословно в любом случае, я решил не класть его в кусок вообще и просто показывал его как обычный текст. Благодарю. – Arjun

Смежные вопросы