knitr:小于/大于符号显示为(¡;)和(¿;)

knitr:小于/大于符号显示为(¡;)和(¿;),r,knitr,R,Knitr,我是使用knitr生成报告的初学者。 我有一个R脚本(参见下面的示例;顺便说一句,我使用RStudio来完成所有这些),它运行时没有错误,输出是一个数据帧。我的rnw.file如下所示: % !Rnw weave = knitr \documentclass[a4paper]{article} \begin{document} <<echo=FALSE,message=FALSE>>= source("test.R") kable(test.mat) @ \end

我是使用knitr生成报告的初学者。 我有一个R脚本(参见下面的示例;顺便说一句,我使用RStudio来完成所有这些),它运行时没有错误,输出是一个数据帧。我的rnw.file如下所示:

% !Rnw weave = knitr

\documentclass[a4paper]{article}

\begin{document}

<<echo=FALSE,message=FALSE>>=
source("test.R")
kable(test.mat)
@

\end{document}
但这似乎不起作用。包括这一点后,我可以开始编译脚本,但在大约10分钟后(在编译之前只花了几秒钟),我遇到了一个错误(退出代码:1)

提前谢谢

R.script(另存为“test.R”):


temp
是一个数学符号,因此除非它未嵌入数学环境中(内联或作为一个整体),否则无法识别它 试试这个代码

$>$
(不那么优雅的)解决方案
kable
的行为仍然很奇怪。在我分析了它产生的latex代码之后,我尝试了这个解决方案,虽然不那么优雅,但它是有效的。希望其他用户能提供更高效的解决方案。这是我的密码

% !Rnw weave = knitr
\documentclass[a4paper]{article}
\begin{document}
<<echo = F, message = FALSE>>=
source("test.R")
aa1
@
\end{document}
结果如下:

我无法解释为什么它现在能工作,但我发现我应该在序言中使用以下内容:

\usepackage{lmodern}
\usepackage[T1]{fontenc}

在另一个(与我的问题无关)中发现了这一点,但现在我在R输出(不需要在R.script中进行更改)以及pdf中得到了我想要的内容。

谢谢,但现在我在pdf中得到了“$?$”。我只能在R.script中进行更改,因为data.frame是在R.script中创建的(然后我希望使用上面的块在我的pdf中显示为表)。非常奇怪。请显示重现错误的代码的初始部分。我这里的解决方案应该已经很好地工作了,但并不像你说的那样。在R中,我创建了一个用NAs填充的data.frame,然后一步一步地填充它。在最后一列的一个字段中,应该有一个类似“XX主题>28天”的字符串。在R:paste(X.X,“受试者>28天”,sep=“”)中使用此代码在R中效果很好,但是如果我在我的rnw.file中的一块中获取此脚本,我会得到“?”。对不起,我做了一些实验,用
符号打印字符串,打印效果很好。在这一点上,我被困住了,你必须提供一个代码来重现错误以解决问题。谢谢,我现在在我的原始帖子中提供了一些示例代码。可能有一个LaTeX解决方案比@SabDeM答案中R代码中的LaTeX干预更有效。考虑张贴,这里有一个链接。
% !Rnw weave = knitr
\documentclass[a4paper]{article}
\begin{document}
<<echo = F, message = FALSE>>=
source("test.R")
aa1
@
\end{document}
temp <- 12
test.mat <- as.data.frame(matrix(NA,ncol=2,nrow=1))
test.mat$V1 <- 2
test.mat$V2 <- paste(temp,"subjects > 28 days",sep=" ")
aa <- kable(test.mat, format = "latex")
aa1 <- gsub(">", "$>$", aa)
\usepackage{lmodern}
\usepackage[T1]{fontenc}