【问题标题】:\sexpr returning wrong value of r object\sexpr 返回 r 对象的错误值
【发布时间】:2013-06-30 11:53:36
【问题描述】:

当我在 RStudio 中编译 .rnw 文件并创建 pdf 时,.tex/.pdf 中有一些错误的内联值。我试图创建该问题的通用示例,但无法在新示例中重现它。所以我的问题有一些具体的问题。我希望读者可以帮助我解决问题的过程。我尝试过的任何方法似乎都不起作用。

我将从我的 WORKING 示例开始,因为它展示了我的整体设置:

\documentclass[11pt,fullpage,titlepage]{article}

\title{Test}
\begin{document}
\bibliographystyle{apalike}
\maketitle

<<setup, include=FALSE>>=
# set working directory
  wd <- "/Users/ericpgreen/Desktop/test/"
  setwd(wd)

# rnw file saved in "/Users/ericpgreen/Desktop/test/scripts"

# load packages
  require(knitr)  
  require(formatR)
# set chunk options
  opts_knit$set(root.dir = '../') # up one level from scripts folder
@

Create data 

<<data>>=
set.seed(1)
dat <- data.frame(v1 = rnorm(10),
                  v2 = factor(sample(c(0,1), 10, replace=TRUE)),
                  v3 = rnorm(10),
                  v4 = rnorm(10) )
mean.v1 <- mean(dat$v1)
mean.v1
@

mean is equal to \Sexpr{mean.v1}

\end{document}

同样,这个例子有效。 R 中的 mean.v1 对象等于 0.1322028,这是编译文档时出现在 \Sexpr{mean.v1} 位置的值。

然而,在我的例子中(此处未显示),R 对象的值与编译文档时 \Sexpr{} 替换的值不匹配。 R对象rr.ipt.init的正确值为1.4。

但是,当文档编译以下行时:

A relative risk of \Sexpr{round(rr.ipt.init, digits=2)}

我得到的值为 1.92。

关于这个错误值的来源有什么想法吗?我已经清除了我的缓存,清除了工作区,重新启动了 R,但我无法让文档为 rr.ipt.init 编译正确的值。

会话信息() R 版本 3.0.1 (2013-05-16) 平台:x86_64-apple-darwin10.8.0(64位)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] splines   parallel  compiler  grid      stats     graphics  grDevices utils     datasets  methods  
[11] base     

other attached packages:
[1] survival_2.37-4    reshape2_1.2.2     mice_2.17          nnet_7.3-6         experiment_1.1-1  
[6] boot_1.3-9         compute.es_0.2.1   corpcor_1.6.6      MASS_7.3-26        lme4_0.999999-2   
[11] Matrix_1.0-12      lattice_0.20-15    RColorBrewer_1.0-5 scales_0.2.3       gridExtra_0.9.1   
[16] ggplot2_0.9.3.1    lubridate_1.3.0    data.table_1.8.8   xtable_1.7-1       formatR_0.7       
[21] knitr_1.2          plyr_1.8          

loaded via a namespace (and not attached):
[1] colorspace_1.2-2 dichromat_2.0-0  digest_0.6.3     evaluate_0.4.3   gtable_0.1.2     labeling_0.1    
[7] memoise_0.1      munsell_0.4      nlme_3.1-109     proto_0.3-10     rpart_4.1-1      stats4_3.0.1    
[13] stringr_0.6.2    tools_3.0.1   

【问题讨论】:

  • 没有代码来重现这个“错误”我们可能有很多原因。如果您能给我们一个可重现的代码来重现此行为,那将会更简单
  • 我希望可以。当我尝试在新文件中重现错误时,我不能。似乎我的设置有一些特定的东西。您能想到为什么 \Sexpr 不会返回与我在工作区中看到的对象相同的值的任何原因吗?
  • 它可能与您的代码有关,但由于不可能,我不知道如何提供帮助。有时它们是小错字,有时难以捕捉。尝试将对象rr.ipt.init的名称更改为其他名称,以查看它是您的代码还是有另一个同名的对象
  • 我知道这是一种令人沮丧的提问方式。 (还是)感谢你的建议。我将代码块中的rr.ipt.init 重命名为rr.ipt.init1,并将\Sexpr{rr.ipt.init} 更改为\Sexpr{rr.ipt.init1}。然后我运行了文件中的所有代码块并编译了文档。我的 R 工作空间中rr.ipt.init1 的值与编译文档中rr.ipt.init1 的值之间仍然存在差异;在 R 中仍然是 1.4,在编译后的文档中仍然是 1.92。
  • 嗯,我不知道有一个现有的错误可以解释这可能是别人可以的,同时我能给你的唯一建议是逐行重新检查你的代码并重新开始没有工作区的 R 会话。祝你好运

标签: r latex knitr


【解决方案1】:

我决定再次清除缓存并从工作区中删除所有对象(包括隐藏对象)。但是这次我还删除了 R 创建的几个隐藏文件(历史和数据)。当我再次运行代码块并编译文档时,一切正常。我相信唯一的新步骤是删除隐藏的文档。

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多