R 带胶乳前环的针织物

R 带胶乳前环的针织物,r,for-loop,latex,knitr,R,For Loop,Latex,Knitr,抱歉,如果这是一个愚蠢的问题,但是有人知道如何在knitr中循环R函数吗?到目前为止,我的问题是将变量从latex传递到R函数。我正在尝试这样做: \documentclass{article} \usepackage{forloop} \newcounter{ind} \begin{document} %Simple R function: <<simpleRFun, results='asis' ,echo=FALSE>>= simpleRFun = funct

抱歉,如果这是一个愚蠢的问题,但是有人知道如何在knitr中循环R函数吗?到目前为止,我的问题是将变量从latex传递到R函数。我正在尝试这样做:

\documentclass{article}
\usepackage{forloop}
\newcounter{ind}  
\begin{document}

%Simple R function:
<<simpleRFun, results='asis' ,echo=FALSE>>=
simpleRFun = function(ind){
  set.seed(ind) ;
  plot(runif(100)) ;
}
@

%Run the function for value of 1
<<>>=
simpleRFun(1)
@

%Run the function for value of 2
<<>>=
simpleRFun(2)
@

%Loop over values of 1 and 2:
\forloop{ind}{1}{\value{ind} < 3}{
   \arabic{ind}
}

%Loop over values of 1 and 2 and pass to R function:
%Everything runs fine until this line:
\forloop{ind}{1}{\value{ind} < 3}{
<<>>=
simpleRFun(ind)
@
}

\end{document}
\documentclass{article}
\usepackage{forloop}
\新计数器{ind}
\开始{document}
%简单的R函数:
=
SimpleFun=函数(ind){
结实种子(ind);
绘图(runif(100));
}
@
%运行值为1的函数
=
SimpleFun(1)
@
%运行值为2的函数
=
SimpleFun(2)
@
%循环1和2的值:
\forloop{ind}{1}{\value{ind}<3}{
\阿拉伯语{ind}
}
%循环1和2的值并传递给R函数:
%一切正常,直到这一行:
\forloop{ind}{1}{\value{ind}<3}{
=
SimpleFun(ind)
@
}
\结束{document}
我得到以下错误:

Runaway argument?
 #### Error: object 'ind' not found \end {verbatim} \end {kframe} \end \ETC.
./knitr-minimal.tex:97: Paragraph ended before \@xverbatim was complete.
<to be read again> 
                   \par 
l.97 }
失控参数?
####错误:找不到对象“ind”\end{verbatim}\end{kframe}\end\ETC。
./knitr minimal.tex:97:段落在\@xverbatim完成之前结束。
\标准杆
l、 97}

提前感谢您的帮助。

我不认为您能做您想做的事情(至少不能以您想做的方式)。
knitr
函数运行所有的R代码,而不使用LaTeX代码,然后对结果使用LaTeX,它不会对R部件运行R

你能重做你的循环在R中做循环吗,这样
knitr
就可以把循环的结果放入乳胶中了


要么这样,要么你需要一个LaTeX的扩展来为你运行R部件。

Greg,谢谢你的反馈。但我非常确信它会以这种方式工作,若它这样做的话,它还有一些好处——也就是说,我可以在非常高的循环层次上插入乳胶。代码%Everything运行正常,直到以下行:\forloop{ind}{1}{\value{ind}<3}{=SimpleFun(1)@}运行R代码(两次),只针对同一个变量(此处为值1)。我只需要将循环中的变量传递到R。我认为问题在于我不了解如何在latex中传递环境变量。再次感谢。你真的确定R会运行该部分两次吗?在R工作区中是否有名为
ind
的变量?(如果是这样,请将其删除并重试,可能会出现错误)。我认为上面发生的事情是
knitr
在R中运行
simplefun(ind)
一次,忽略LaTeX for循环并使用ind的local to R副本,然后LaTeX获取该输出并包含它两次
knitr
忽略(并传递)所有LaTeX代码(包括循环),只使用其outpu替换R代码,然后LaTeX仅以输出处理文件,没有代码剩余。啊,我相信你是对的。我刚刚在图(main=ind)中添加了'ind',正如您所说,它只是复制了两次图。你知道,在我的R区块中,没有任何直接向循环中添加乳胶的方法吗?我需要在循环的每个间隔更新latex。谢谢。我不太明白你到底想在这里做什么;如果要在循环中生成两个绘图,为什么不为(1:2中的i)SimpleFun(i)?如果要从R块写入本机TeX输出,可以使用块选项
results='asis'
与R代码中的一些
cat()
语句组合使用。@JimCrozier
paste
函数只将字符串组合在一起,而不打印它们(但如果不分配结果,则对结果调用print)。
print
功能用于“漂亮打印”或格式化输出,有时仅显示“打印”对象的子集,并可以添加其他信息。
cat
函数将其参数粘贴在一起,然后将它们按原样转储到屏幕或文件中(名称
cat
源于对unix cat命令的常见误用,该命令最初是concatenate的缩写)。为什么对第一个块使用
results='asis'
?这没有意义,因为该块没有任何文本输出;更重要的是,您还通过
echo=FALSE
隐藏了R源代码,因此基本上不会将任何内容写入到Tex中。如果所有其他操作都失败,您可能可以使用
brew
,并输出一个可编织的文件。