Как комментировать в файле Rnw с R экзаменами - PullRequest
1 голос
/ 20 апреля 2020

Я хотел бы знать, возможно ли сделать комментарий в упражнении с файлом Rnw, чтобы что-то могло быть полностью проигнорировано как R, так и LaTeX. Это было бы полезно для меня, чтобы иметь некоторые упражнения по повышению гибкости.

В частности, я хотел бы задать вопрос с несколькими вариантами ответов с пятью вариантами, в которых даны два истинных утверждения и два неправильных утверждения, а другое утверждение выбирается случайным образом между истинными утверждениями и двумя неправильными утверждениями. Попытка добиться этого, как в http://www.r-exams.org/templates/boxplots/, оказывается для меня довольно трудной, потому что все эти утверждения связаны с кодированием LaTeX, поэтому у меня возникают проблемы при вставке его в R-чанк. Поэтому я пробовал что-то другое, но я получаю сообщение об ошибке, в котором говорится, что длина exsolution и вопросника не совпадает. Возможно, есть какой-то способ заставить комментирование работать.

<<echo=FALSE, results=hide>>=

scelta=sample(c("%'","%'",""),size=3, replace=FALSE)
if (scelta[1]=="%'") soluz=c(1,1,rep(0,3)) else soluz=c(1,1,1,0,0)

@

\begin{question}

Say which statements are true. 

\begin{answerlist}

 \item first true statement
\item second true statement
\Sexpr{scelta[1]} \item third true statement 

\item first wrong statment
\item second wrong statment 
\Sexpr{scelta[2]} \item statment
\Sexpr{scelta[3]} \item statement

\end{answerlist}
\end{question}


\begin{solution}

<<echo=FALSE, results=tex>>=
answerlist(ifelse(soluz, "Vero", "Falso"))
@

\end{solution}


\exname{name_exercise}
\extype{mchoice}
\exsolution{\Sexpr{mchoice2string(soluz)}}
\exshuffle{5} 

Так что, вероятно, у меня есть трудности, потому что я недостаточно знаком со Sweave, но мою проблему, возможно, можно решить несколькими способами с помощью R / экзаменов. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Я бы не рекомендовал делать это через вставку комментариев, потому что (а) код (по крайней мере, на мой взгляд) не так ясен и (б) вы ограничены определенными образцами выборки. Вместо этого я бы предпочел сделать что-то вроде этого в коде R:

ans <- c(
  "This is the first statement and correct.",
  "This is the second statement and also correct.",
  "This is the third and last correct statement.",
  "This is the fourth statement and it is false.",
  "This is the fifth statement, the second false one.",
  "This is the sixth statement, false again.",
  "This is the seventh statement, it is false and the last one."
)
sol <- rep(c(TRUE, FALSE), c(3, 4))
i <- sample(1:7, 5)
ans <- ans[i]
sol <- sol[i]

. Это устанавливает все ответы, все решения и примеры без каких-либо ограничений пять из семи ответов вместе с соответствующими решениями. Затем вы можете использовать answerlist(ans) et c. включить список ответов в вопрос.

А затем легко переключиться на любую другую форму выборки, заменив способ вычисления i. Например, вы можете сделать это:

i <- c(sample(1:3, 2), sample(4:7, 2)) ## two true, two false
i <- sample(setdiff(1:7, i), 1)        ## one additional
i <- sample(i)                         ## permute

Из-за последней строки также нет необходимости устанавливать тег exshuffle.

0 голосов
/ 20 апреля 2020

Я только что нашел способ заставить его работать. По сути, я узнал, что могу сбежать с четырехкратным бэкслой sh. Итак, на данный момент, я мог бы сделать так же, как в примере boxplot. Любые комментарии или предложения будут приветствоваться.

<<echo=FALSE, results=hide>>=

scelta=sample(c("%","%","\\\\item"),size=3, replace=FALSE)
if (scelta[1]=="%") soluz=c(1,1,rep(0,3)) else soluz=c(1,1,1,0,0)

@

\begin{question}

Say which statements are true. 

\begin{answerlist}

 \item first true statement
\item second true statement
\Sexpr{scelta[1]} third true statement 

\item first wrong statment
\item second wrong statment 
\Sexpr{scelta[2]} third wrong statment
\Sexpr{scelta[3]} fourth wrong statement

\end{answerlist}
\end{question}


\begin{solution}

<<echo=FALSE, results=tex>>=
answerlist(ifelse(soluz, "Vero", "Falso"))
@

\end{solution}


\exname{name_exercise}
\extype{mchoice}
\exsolution{\Sexpr{mchoice2string(soluz)}}
\exshuffle{5} 
...