R代码块和LaTeX的knitr中的全局变量

R代码块和LaTeX的knitr中的全局变量,r,latex,global-variables,knitr,R,Latex,Global Variables,Knitr,我正在尝试创建一个数值变量(在代码中称为nClusters),它可以在knitr文档中使用R代码块和LaTeX。下面的代码中有一个示例 在这里,我初始化数值变量nClusters并将其赋值为7。稍后,在文档中,我在一个R代码块中调用它,这似乎可以正常工作。但是,我随后尝试在LaTeX部分(R代码块之外)调用它,这会导致问题: \documentclass{article} \usepackage{float, hyperref} \usepackage[margin=1in]{geometry}

我正在尝试创建一个数值变量(在代码中称为nClusters),它可以在knitr文档中使用R代码块和LaTeX。下面的代码中有一个示例

在这里,我初始化数值变量nClusters并将其赋值为7。稍后,在文档中,我在一个R代码块中调用它,这似乎可以正常工作。但是,我随后尝试在LaTeX部分(R代码块之外)调用它,这会导致问题:

\documentclass{article}
\usepackage{float, hyperref}
\usepackage[margin=1in]{geometry}
\usepackage{pgffor}

\begin{document}

<<options, echo=FALSE>>=
nClusters = 7 # I only want to define nClusters once
library(knitr)
opts_chunk$set(concordance=TRUE)
@

<<echo=FALSE,eval=TRUE,results='asis'>>=
# Here the call to nClusters works
for (i in 2:nClusters){
  print(paste("This is number",i))
}
@

% Here the call to nClusters does not work
\begin{center}
\foreach \i in {2,3,...,nClusters} {
  Hello \i\
}
\end{center}

\end{document}
\documentclass{article}
\usepackage{float,hyperref}
\usepackage[margin=1in]{geometry}
\usepackage{pgffor}
\开始{document}
=
nClusters=7#我只想定义一次nClusters
图书馆(knitr)
选择块$set(一致性=真)
@
=
#在这里,对nClusters的调用是有效的
对于(i在2:nClusters中){
打印(粘贴(“这是数字”,i))
}
@
%在这里,对NCluster的调用不起作用
\开始{center}
\foreach\i在{2,3,…,nClusters}{
你好\i\
}
\结束{中心}
\结束{document}
当我编织它时,我得到以下输出:

输出的时间应为:

差异发生在对变量的LaTeX调用中,因为如果我在7中硬编码,那么它就可以工作。因此,我的问题是:是否可以在knitr中创建一个全局变量,该变量可以在R代码块和LaTeX部分中调用?

使用pgffor时

\foreach <variables> in {<list>} <commands>
你得到

[1] ”This is number 2” [1] ”This is number 3” [1] ”This is number 4” [1] ”This is number 5” [1] ”This is
number 6” [1] ”This is number 7”
Hello 2 Hello 3 Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ?
Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ?
Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ?
Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ?
Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ? Hello ?
Hello ? Hello ? Hello Hello A Hello B Hello C
这是一个以2,3开头,以C结尾的序列,我不知道在“?”中打印出了什么字符

你会产生完全相同的结果。要计算R块之外的变量,需要使用
Sexpr{}

\begin{center}
\foreach \i in {2,3,...,\Sexpr{nClusters}} {
  Hello \i\
}
产生


我想这是每个人的问题。通常来说,
R
变量是通过
$\Sexpr{nClusters}$
访问的,但不确定在这种情况下是否可行,您应该试一试!
\begin{center}
\foreach \i in {2,3,...,\Sexpr{nClusters}} {
  Hello \i\
}