Ошибка с функцией R при использовании Knitr в Lyx

Я получаю сообщение об ошибке при использовании функции summary() с помощью Knitr в Lyx. Предшествующие ему функции работают.

<<>>=
library(faraway)
head(teengamb)
mdl <- lm(gamble ~ sex + status, data=teengamb) 
summary(mdl)
@

Я ввожу этот код через Insert Tex Code в Lyx. Я только что проверил, что могу запустить сводку (teengamb), но не сводку (mdl). Оба кода работают в RStudio.

Ошибка "Неопределенная управляющая последовательность" с описанием "\end{verbatim}..."


person Saber CN    schedule 16.09.2012    source источник
comment
Можете ли вы более конкретно рассказать об ошибке, которую вы получаете? Вы получите ошибку, если поместите это в документ Lyx отдельно?   -  person A5C1D2H2I1M1N2O1R2T1    schedule 16.09.2012
comment
Я не был конкретным, я обновил свой пост, чтобы включить больше деталей.   -  person Saber CN    schedule 16.09.2012
comment
Извините, я не могу воспроизвести вашу проблему; Я использую Lyx 2.0.4 на Ubuntu. Вы пытались пометить код как фрагмент Sweave (используя стили раскрывающегося списка) вместо использования Insert > Tex Code? Какая версия Lyx и т. д. и какую ОС вы используете?   -  person A5C1D2H2I1M1N2O1R2T1    schedule 16.09.2012
comment
Я использую Lyx 2.0.4 на Mac. Я только что попробовал Sweave, и это сработало, думаю, у меня проблема только с вязанием.   -  person Saber CN    schedule 16.09.2012
comment
Чтобы ответить на комментарий @mrdwab, его предложение также сработало для меня, но я должен был убедиться, что Rnw(knitr) был перемещен в столбец «Выбранное» в разделе «Документ» › «Настройки» › «Модули».   -  person    schedule 17.09.2012
comment
@SaberCN Я не могу воспроизвести проблему с LyX 2.0.4/Ubuntu. Можете ли вы опубликовать полный журнал ошибок? (например, на pastebin.com) Кстати, какая у вас версия Knitr? packageVersion('knitr')   -  person Yihui Xie    schedule 18.09.2012
comment
@Yihui Я не видел твоего комментария до сих пор. Я отправил журнал на pastebin.com/t2ZL1CnA , ошибка начинается со строки 234.   -  person Saber CN    schedule 11.10.2012
comment
@SaberCN Кто-то задал мне аналогичный вопрос после вашего сообщения, и, наконец, выяснилось, что причина в том, что его LaTeX не поддерживает ' (апостроф) в среде verbatim, что действительно странно, и я понятия не имею, как это возможно. Чтобы проверить свою проблему, проверьте, можете ли вы скомпилировать этот минимальный документ: pastebin.com/72n9RCEm.   -  person Yihui Xie    schedule 11.10.2012
comment
@Yihui Я сохранил ваш код в файл tex, импортировал его в Lyx, загрузил Knitr и скомпилировал без проблем. Это единственный случай, когда я получаю сообщение об ошибке с вязкой. Например, я не получаю никаких ошибок с этим кодом, ‹‹››= library(faraway) mdl‹-lm(total~ratio+expend, data=sat) summary(mdl) @   -  person Saber CN    schedule 12.10.2012
comment
@SaberCN Как насчет установки options(show.signif.stars = FALSE)?   -  person Yihui Xie    schedule 12.10.2012
comment
@Yihui Да! Это сработало после того, как я добавил этот код в начале. Можете ли вы объяснить проблему, стоящую за этим?   -  person Saber CN    schedule 12.10.2012
comment
@SaberCN это слишком странно; Я не могу воспроизвести это и не могу объяснить...   -  person Yihui Xie    schedule 12.10.2012
comment
@SaberCN Я узнал настоящую причину. Смотрите мое редактирование ниже.   -  person Yihui Xie    schedule 15.02.2013


Ответы (1)


Эта проблема была решена в knitr после версии 1.1. Вам не нужно ничего менять в LyX или R. Установите knitr из CRAN:

install.packages('knitr')

Не обращайте внимания на оба ответа ниже:


Наконец-то я выяснил причину этой ошибки (это самая глубокая ошибка, которую я когда-либо видел). Это связано с тем, что пакет upquote не работает, если кодировка T1 объявлена ​​после его загрузки, например.

\documentclass{article}
\usepackage{upquote}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\begin{document}
\begin{verbatim}
'
\end{verbatim}
\end{document}

Но если мы переместим upquote после fontenc, это сработает:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{upquote}
\begin{document}
\begin{verbatim}
'
\end{verbatim}
\end{document}

Или просто не используйте кодировку T1 -- снимите галочку перед кодировкой шрифта в настройках:

Причина, по которой пользователи Ubuntu не смогли воспроизвести проблему, заключалась в том, что upquote.sty был взят из дерева texmf R, а не дерева TeXLive, и версия upquote для R работает.

Другой способ решить проблему — добавить дерево texmf R в MikTeX под Windows.

Не обращайте внимания на ответ ниже:


Поскольку options(show.signif.stars = FALSE) сработало, я публикую его как один из возможных ответов, но для меня это все еще очень странная проблема. Установка show.signif.stars = FALSE удаляет коды значимости из результатов ниже (которые были из summary(mdl)):

Call:
lm(formula = gamble ~ sex + status, data = teengamb)

Residuals:
    Min      1Q  Median      3Q     Max 
-35.873 -15.755  -3.007  10.924 111.586 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  60.2233    15.1347   3.979 0.000255 ***
sex         -35.7094     9.4899  -3.763 0.000493 ***
status       -0.5855     0.2727  -2.147 0.037321 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 27.99 on 44 degrees of freedom
Multiple R-squared: 0.2454, Adjusted R-squared: 0.2111 
F-statistic: 7.154 on 2 and 44 DF,  p-value: 0.002042 

Ошибка исходила из строки Signif. codes, и я не понимаю, почему любой из этих символов может вызывать ошибки в LaTeX: все они ASCII и должны работать внутри среды verbatim.

Судя по комментариям выше, ни @mrdwab, ни я не смогли воспроизвести проблему. Я думаю, должно быть что-то странное в установке LaTeX OP.

person Yihui Xie    schedule 12.10.2012