编织 pdf 时出现 isIncomplete(con) 错误

isIncomplete(con) error when knitting pdf

我能够 运行 来自 SWSamp 包的以下示例脚本在控制台中正常运行,但是在编织成 PDF 时出现 "isIncomplete(con)" 错误。这个包需要使用至少 2 个核心,我想知道这个连接错误是否与尝试并行 运行 有关。

---
title: "Test"
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
  install.packages("http://www.statistica.it/gianluca/SWSamp/SWSamp_0.3.tar.gz", type="source", dependencies=TRUE, repos=NULL)
  library(SWSamp)
```

```{r}
  mu1=0.3
  b.trt=-0.3875
  sigma.e=1.55
  J=5
  K=20
  sig.level=0.05
  n.sims=10
  rho=0.5
  pow.cont <- sim.power(I=14, J=J, H=NULL, K=K, rho=rho, mu=mu1, sigma.e=sigma.e,
                        b.trt=b.trt, formula=NULL, n.sims=n.sims, 
                        sig.level=sig.level, n.cores=2)
  pow.cont$power
```

Quitting from lines 16-28 (test.Rmd) Error in isIncomplete(con) : invalid connection Calls: ... evaluate_call -> handle_output -> -> isIncomplete Quitting from lines 16-28 (test.Rmd) Error in isOpen(con) : invalid connection Calls: ... in_dir -> evaluate -> evaluate_call -> -> isOpen Error in close.connection(con) : invalid connection Calls: -> -> close -> close.connection Execution halted

> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12.1

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] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] SWSamp_0.3     lme4_1.1-12    Matrix_1.2-7.1

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.8       knitr_1.15.1      magrittr_1.5      splines_3.3.2     MASS_7.3-45      
 [6] doParallel_1.0.10 lattice_0.20-34   foreach_1.4.3     minqa_1.2.4       stringr_1.1.0    
[11] tools_3.3.2       parallel_3.3.2    grid_3.3.2        nlme_3.1-128      htmltools_0.3.5  
[16] iterators_1.0.8   yaml_2.1.14       rprojroot_1.1     digest_0.6.10     nloptr_1.0.4     
[21] codetools_0.2-15  evaluate_0.10     rmarkdown_1.3     stringi_1.1.2     compiler_3.3.2   
[26] backports_1.0.4

sim.power() 函数 运行s closeAllConnections(),根据此 SO answer 干扰 knitr。此答案中的解决方案是将表达式用引号和 evaluate() 函数括起来,但它对我不起作用。

作为临时解决方案,我重新定义了 sim.power() 函数,并注释掉了 closeAllConnections() 调用。我不知道这是否有不利影响,但对我来说似乎 运行。很高兴接受更好的答案。