Sweave не загружает объекты R при запуске из сценария R - PullRequest
0 голосов
/ 07 января 2020

Мне нужно запустить последовательность latex файлов, созданных в R Sweave, в которые я загружаю ранее созданные R objects. Однако функция Sweave() загружает эти объекты не так, как должна.

В качестве рабочего примера у меня есть следующий R код:

rm(list=ls())
x<-2+2
save(list = ls(all = TRUE), file= "test.rda")
Sweave("teststack.Rnw")

, где «teststack.Rnw» выглядит следующим образом:

\documentclass{article}

\begin{document}
2 and 2 equals
\Sexpr{load("test.rda")
x}

\end{document}

При запуске код R, я получаю неправильный код latex, который выглядит следующим образом:

\documentclass{article}
\usepackage{Sweave}
\begin{document}
2 and 2 equals
\Sexpr{load("test.rda")
x}
\end{document}

Однако, когда я запускаю teststack.Rnw напрямую, используя Rstudio, я получаю нужный PDF и соответствующий latex code:

    \documentclass{article}\usepackage[]{graphicx}\usepackage[]{color}
    % maxwidth is the original width if it is less than linewidth
    % otherwise use linewidth (to make sure the graphics do not exceed the margin)
    \makeatletter
    \def\maxwidth{ %
      \ifdim\Gin@nat@width>\linewidth
        \linewidth
      \else
        \Gin@nat@width
      \fi
    }
    \makeatother

    \definecolor{fgcolor}{rgb}{0.345, 0.345, 0.345}
    \newcommand{\hlnum}[1]{\textcolor[rgb]{0.686,0.059,0.569}{#1}}%
    \newcommand{\hlstr}[1]{\textcolor[rgb]{0.192,0.494,0.8}{#1}}%
    \newcommand{\hlcom}[1]{\textcolor[rgb]{0.678,0.584,0.686}{\textit{#1}}}%
    \newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}%
    \newcommand{\hlstd}[1]{\textcolor[rgb]{0.345,0.345,0.345}{#1}}%
    \newcommand{\hlkwa}[1]{\textcolor[rgb]{0.161,0.373,0.58}{\textbf{#1}}}%
    \newcommand{\hlkwb}[1]{\textcolor[rgb]{0.69,0.353,0.396}{#1}}%
    \newcommand{\hlkwc}[1]{\textcolor[rgb]{0.333,0.667,0.333}{#1}}%
    \newcommand{\hlkwd}[1]{\textcolor[rgb]{0.737,0.353,0.396}{\textbf{#1}}}%
    \let\hlipl\hlkwb

    \usepackage{framed}
    \makeatletter
    \newenvironment{kframe}{%
     \def\at@end@of@kframe{}%
     \ifinner\ifhmode%
      \def\at@end@of@kframe{\end{minipage}}%
      \begin{minipage}{\columnwidth}%
     \fi\fi%
     \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
     \colorbox{shadecolor}{##1}\hskip-\fboxsep
         % There is no \\@totalrightmargin, so:
         \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
     \MakeFramed {\advance\hsize-\width
       \@totalleftmargin\z@ \linewidth\hsize
       \@setminipage}}%
     {\par\unskip\endMakeFramed%
     \at@end@of@kframe}
    \makeatother

    \definecolor{shadecolor}{rgb}{.97, .97, .97}
    \definecolor{messagecolor}{rgb}{0, 0, 0}
    \definecolor{warningcolor}{rgb}{1, 0, 1}
    \definecolor{errorcolor}{rgb}{1, 0, 0}
    \newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX

    \usepackage{alltt}
    \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
    \begin{document}
    2 and 2 equals
    4

    \end{document}

Почему Sweave() в моей функции R не оценивает скрипт так же, как когда я запускаю его вручную?

...