Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成书本时Windows系统调用失败;R包“;_R_System Calls_Pandoc - Fatal编程技术网

生成书本时Windows系统调用失败;R包“;

生成书本时Windows系统调用失败;R包“;,r,system-calls,pandoc,R,System Calls,Pandoc,我正试图用“”来构建哈德利的书。我已经下载并解压了源代码,am已经将源代码(经过一些修改)和r-pkgs-first-edition-freeze\book\build book.r中的代码结合起来构建了这本书(本文末尾的原始代码)。工程规范的第一部分如预期: # install.packages(c("devtools", "roxygen2", "testthat", "knitr")) # orginal code library(devtools); library(roxyg

我正试图用“”来构建哈德利的书。我已经下载并解压了源代码,am已经将源代码(经过一些修改)和
r-pkgs-first-edition-freeze\book\build book.r
中的代码结合起来构建了这本书(本文末尾的原始代码)。工程规范的第一部分如预期:

# install.packages(c("devtools", "roxygen2", "testthat", "knitr"))      # orginal code
library(devtools); library(roxygen2); library(testthat); library(knitr) # what I'm using
# install.packages("rstudioapi")                                        # orginal code
library(rstudioapi)                                                     # what I'm using
rstudioapi::isAvailable("0.99.149")
  [1] TRUE                                                              # expected result
在下一部分中,
has_devel()
没有给出中所述的详细输出,但它也不会抛出错误,正如预期的那样,
.Last.value==TRUE
,因此我认为我可以:

devtools::install_github("r-lib/devtools")
has_devel()
.Last.value
  [1] TRUE
来自的代码的最后一部分也可以工作。与中列出的相比,我的许多软件包都是更新版本,但我不认为这是我后续问题的根源

library(roxygen2)
library(testthat)
devtools::session_info()
  ─ Session info ───────────────────────────────────────────────────────────
  setting  value                       
  version  R version 3.5.1 (2018-07-02)
  os       Windows 7 x64 SP 1          
  system   x86_64, mingw32             
  ui       RStudio                     
  language (EN)                        
  collate  English_United States.1252  
  tz       America/Chicago             
  date     2019-04-10                  

  ─ Packages ───────────────────────────────────────────────────────────────
  package       * version    date       source                             
  assertthat      0.2.0      2017-04-11 CRAN (R 3.5.1)                     
  backports       1.1.2      2017-12-13 CRAN (R 3.5.0)                     
  callr           2.0.4      2018-05-15 CRAN (R 3.5.1)                     
  cli             1.0.0      2017-11-05 CRAN (R 3.5.1)                     
  clisymbols      1.2.0      2017-05-21 CRAN (R 3.5.1)                     
  commonmark      1.5        2018-04-28 CRAN (R 3.5.1)                     
  crayon          1.3.4      2017-09-16 CRAN (R 3.5.1)                     
  desc            1.2.0      2018-05-01 CRAN (R 3.5.1)                     
  devtools      * 2.0.2.9000 2019-04-11 Github (r-lib/devtools@ab6c878)    
  digest          0.6.15     2018-01-28 CRAN (R 3.5.1)                     
  evaluate        0.11       2018-07-17 CRAN (R 3.5.1)                     
  fs              1.2.5      2018-07-30 CRAN (R 3.5.1)                     
  glue            1.3.0      2018-07-17 CRAN (R 3.5.1)                     
  htmltools       0.3.6      2017-04-28 CRAN (R 3.5.1)                     
  knitr         * 1.20       2018-02-20 CRAN (R 3.5.1)                     
  magrittr        1.5        2014-11-22 CRAN (R 3.5.1)                     
  memoise         1.1.0      2017-04-21 CRAN (R 3.5.1)                     
  oldbookdown   * 0.1        2019-04-11 Github (hadley/oldbookdown@0ffc6fb)
  pkgbuild        1.0.3      2019-04-11 Github (r-lib/pkgbuild@79cb7a0)    
  pkgload         1.0.1.9000 2019-04-11 Github (r-lib/pkgload@0ef4f58)     
  prettyunits     1.0.2      2015-07-13 CRAN (R 3.5.1)                     
  processx        3.1.0      2018-05-15 CRAN (R 3.5.1)                     
  R6              2.2.2      2017-06-17 CRAN (R 3.5.0)                     
  Rcpp            0.12.18    2018-07-23 CRAN (R 3.5.1)                     
  remotes         2.0.3      2019-04-09 url                                
  RevoUtils     * 11.0.1     2018-08-01 local                              
  RevoUtilsMath * 11.0.0     2018-08-01 local                              
  rlang           0.2.1      2018-05-30 CRAN (R 3.5.1)                     
  rmarkdown     * 1.10       2018-06-11 CRAN (R 3.5.1)                     
  roxygen2      * 6.1.0      2018-07-27 CRAN (R 3.5.1)                     
  rprojroot       1.3-2      2018-01-03 CRAN (R 3.5.1)                     
  rstudioapi    * 0.7        2017-09-07 CRAN (R 3.5.1)                     
  sessioninfo     1.0.0      2017-06-21 CRAN (R 3.5.1)                     
  stringi         1.2.4      2018-07-20 CRAN (R 3.5.1)                     
  stringr         1.3.1      2018-05-10 CRAN (R 3.5.1)                     
  testthat      * 2.0.0      2017-12-13 CRAN (R 3.5.1)                     
  usethis       * 1.4.0      2018-08-14 url                                
  withr           2.1.2      2018-03-15 CRAN (R 3.5.1)                     
  xml2            1.2.0      2018-01-24 CRAN (R 3.5.1)                     
  yaml            2.2.0      2018-07-25 CRAN (R 3.5.1)
buildbook.r
中的第一部分代码对我很有用:

install_github("hadley/oldbookdown@0ffc6fb")  # code I needed to add
library(oldbookdown)
library(rmarkdown)
# Render chapters into tex  ------------------------------------------------
needs_update <- function(src, dest) {
  if (!file.exists(dest)) return(TRUE)
  mtime <- file.info(src, dest)$mtime
  mtime[2] < mtime[1]
}
render_chapter <- function(src) {
  dest <- file.path("book/tex/", gsub("\\.rmd", "\\.tex", src))
  if (!needs_update(src, dest)) return()
  message("Rendering ", src)
  command <- bquote(rmarkdown::render(.(src), oldbookdown::tex_chapter(),
    output_dir = "book/tex", quiet = TRUE, env = globalenv()))
  writeLines(deparse(command), "run.r")
  on.exit(unlink("run.r"))
  source_clean("run.r")
}
source_clean <- function(path) {
  r_path <- file.path(R.home("bin"), "R")
  cmd <- paste0(shQuote(r_path), " --quiet --file=", shQuote(path))
  out <- system(cmd, intern = TRUE)
  status <- attr(out, "status")
  if (is.null(status)) status <- 0
  if (!identical(as.character(status), "0")) {
    stop("Command failed (", status, ")", call. = FALSE)
  }
}
chapters <- dir(".", pattern = "\\.rmd$")

系统调用失败,但由于我不知道Windows调用
“C:/PROGRA~1/MIE74D~1/ROPEN~1/R-35~1.1/bin/x64/R”-quiet--file=“run.R”
应该做什么,我不知道如何解决这个问题。我试图更改
r\u路径问题在于错误的r主目录
C:/PROGRA~1
只是一个例子,它实际上指向
C:/PROGRAM FILES/…

R-35~1.1
相同,它指向
/R/R-3.5.1
或其他东西。这只是一个“简短的名字”

系统调用失败,但因为我不知道Windows调用什么 “C:/PROGRA~1/MIE74D~1/ROPEN~1/R-35~1.1/bin/x64/R”--安静 --file=“run.r”是应该做的,我不知道如何解决这个问题

您的脚本包含以下代码:

source_clean <- function(path) {
  r_path <- file.path(R.home("bin"), "R")
  ...
}
R.home
函数返回R home目录。如果您导航到机器上的确切位置,您应该会看到R安装的位置

在Windows上设置R环境变量 假设您在此处找到R安装
C:\Program Files\R\R-3.3.2\bin\x86
,然后执行以下操作:

C:\>cd C:\Users\JT\R\Books\r-pkgs-first-edition-freeze

C:\Users...freeze>"C:\Program Files\R\R-3.5.3\bin\x64\R" --quiet --file="run.r"
    > rmarkdown::render("check.rmd", oldbookdown::tex_chapter(), output_dir = "book/tex",
    +     quiet = TRUE, env = globalenv())
    --chapters has been removed. Use --top-level-division=chapter instead.
    Try pandoc.exe --help for more information.
    Error: pandoc document conversion failed with error 2
    Execution halted
  • 打开“开始”菜单,键入“查看高级系统设置”并点击“环境变量”
  • 在“系统变量”下,选择路径并单击编辑
  • 单击“新建”,并将R的文件夹地址添加到其中(
    C:\ProgramFiles\R\R-3.3.2\bin\x86

  • 另请参阅和,以获取设置R home路径的提示。

    事实证明,有两个问题,在调用
    lappy(chapters,render\u chapter)
    时,这两个问题都会产生基本相同的错误。它与路径的短版本无关(即
    C:/PROGRA~1/MIE74D~1/ROPEN~1/R-35~1.1/bin/x64/R

    首先,
    oldbookdown::tex_chapter()
    返回的列表与最新版本的
    pandocs
    不兼容。因此,我将
    render_chapter
    函数更改如下:

    render_chapter <- function(src) {
      dest <- file.path("book/tex/", gsub("\\.rmd", "\\.tex", src))
      if (!needs_update(src, dest)) return()
      message("Rendering ", src)
      # "changed oldbookdown::tex_chapter()" to "temp"
      command <- bquote(rmarkdown::render(.(src), temp, output_dir = "book/tex", quiet = TRUE, env = globalenv()))
      # added definition for temp (with appropriate changes to 
      # oldbookdown::tex_chapter()) to the writeLines() call
      writeLines(
        c(
          "temp <- oldbookdown::tex_chapter()",
          'temp$pandoc$from <- "markdown"',
          'temp$pandoc$args[1] <- "--top-level-division=chapter"',
          deparse(command)
        ),
        "run.r"
      )
      on.exit(unlink("run.r"))
      source_clean("run.r")
    }
    

    render\u你说得对,Windows无法识别路径
    C:/PROGRA~1/MIE74D~1/ROPEN~1/R-35~1.1/bin/x64
    。但是,我尝试替换
    r\u路径,我会手动检查路径上的r实际上是:“C:/Program Files/Microsoft/r Open/r-3.5.1/bin/x64”,并尝试启动该r(不是通过脚本,而是双击它或在没有脚本的情况下从终端打开)。如果失败,那么重新安装R的副本应该可以修复它。如果计算机上有多个安装,请使用
    file.path()
    函数的绝对路径,而不是依赖
    R.home()
    file.path(R.home("bin"), "R")
      [1] "C:/PROGRA~1/MIE74D~1/ROPEN~1/R-35~1.1/bin/x64/R"
    
    C:\>cd C:\Users\JT\R\Books\r-pkgs-first-edition-freeze
    
    C:\Users...freeze>"C:\Program Files\R\R-3.5.3\bin\x64\R" --quiet --file="run.r"
        > rmarkdown::render("check.rmd", oldbookdown::tex_chapter(), output_dir = "book/tex",
        +     quiet = TRUE, env = globalenv())
        --chapters has been removed. Use --top-level-division=chapter instead.
        Try pandoc.exe --help for more information.
        Error: pandoc document conversion failed with error 2
        Execution halted
    
    C:\Users...freeze>"C:/PROGRA~1/R/R-35~1.3/bin/x64/R" --quiet --file="run.r"
     #or#
    C:\Users...freeze>"C:\Program Files\R\R-3.5.3\bin\x64\R" --quiet --file="run.r"
    > rmarkdown::render("check.rmd", oldbookdown::tex_chapter(), output_dir = "book/
    tex",
    +     quiet = TRUE, env = globalenv())
    pandoc.exe: Unknown reader: markdown_style
    Error: pandoc document conversion failed with error 7
    Execution halted
    
    source_clean <- function(path) {
      r_path <- file.path(R.home("bin"), "R")
      ...
    }
    
    file.path(R.home("bin"))
    [1] "/Library/Frameworks/R.framework/Resources/bin"
    
    Sys.getenv("R_HOME")
    "/Library/Frameworks/R.framework/Resources"
    
    render_chapter <- function(src) {
      dest <- file.path("book/tex/", gsub("\\.rmd", "\\.tex", src))
      if (!needs_update(src, dest)) return()
      message("Rendering ", src)
      # "changed oldbookdown::tex_chapter()" to "temp"
      command <- bquote(rmarkdown::render(.(src), temp, output_dir = "book/tex", quiet = TRUE, env = globalenv()))
      # added definition for temp (with appropriate changes to 
      # oldbookdown::tex_chapter()) to the writeLines() call
      writeLines(
        c(
          "temp <- oldbookdown::tex_chapter()",
          'temp$pandoc$from <- "markdown"',
          'temp$pandoc$args[1] <- "--top-level-division=chapter"',
          deparse(command)
        ),
        "run.r"
      )
      on.exit(unlink("run.r"))
      source_clean("run.r")
    }