当使用外部 Rnw 文件作为数据集时,probsoln 内部的脆弱/逐字 R 代码

当使用外部 Rnw 文件作为数据集时,probsoln 内部的脆弱/逐字 R 代码

后续行动这个问题关于在包中使用的环境中使用 R 代码probsoln。如果您取消注释下面的部分并在主 Rnw 文件中定义问题,则 R 代码将被正确编译和呈现。
但是,当您将该问题定义移动到单独的文件并将其加载时,R 代码不再正确传递。
我知道上一个线程的原始答案在 R 代码周围有一个逐字环境,但我无法让它工作,脆弱的选项使它对我有用。

\documentclass{article}
\usepackage{probsoln}
\showanswers

%%% -- Problem Definition --%%
% \begin{defproblem}{comparing_rates2}[fragile]
% If 136,670,000 persons were wage and salary workers and 10,544,000 persons were self-employed, what is the fatal injury rate per 100,000 workers for each group? 
% 
% \begin{onlysolution}[fragile]%
%     \begin{solution}
%     \begin{enumerate}
%   \item Wage and salary workers have a fatal injury rate of 3.4 per 100,000 workers. \\
%   Self-employed workers have a fatal injury rate of 9.9 per 100,000 workers. 
%   \item Self-employed workers have the worst outcome becuase they show a higher rate of fatal injury. 
% \end{enumerate} 
% <<>>=
% (4613/136670000)*100000
% (1044/10544000)*100000
% @
%     \end{solution}
% \end{onlysolution}
% \end{defproblem}

%% - Load all problems defined in the dataset
\loadallproblems{test_dataset.rnw}

\begin{document}

\ifthenelse{\boolean{showanswers}}{\title{Solution set for Week 1 HW}}{\title{Homework for Week 1 HW}}
\maketitle 

\paragraph{Problem set 1.1: Comparing Rates}
  \useproblem{comparing_rates2}

\end{document}

答案1

谢谢 Nicola,当我使用你的代码时,我得到了与你完全相同的输出。问题在于这段代码:

<<>>=
(4613/136670000)*100000
(1044/10544000)*100000
@

应编译为 R 代码,而不是简单的逐字文本。因此,此块的逐字包装器使其不会knitr作为 R 代码传递给编译器进行处理。

[更新] - 这让我想到了 Rstudio 如何处理多个 *.Rnw 文件拼接在一起,我意识到使用的 \loadallproblemsprobsoln不适用于 knitr,因此我必须使用

<<test_dataset,child="test_dataset.Rnw">>=
@ 

而是调用 test_dataset 中的代码,并将相应的

% !Rnw root = test.Rnw
<<set-parent, echo=FALSE, cache=FALSE>>=
set_parent('test.Rnw')
@

在儿童档案中。完全是 http://yihui.name/knitr/demo/child/

相关内容