是否可以使用R命令在Windows上安装pandoc?

Tal*_*ili 7 r windows-7 pandoc

我想通过在R中运行命令在Windows 7机器上下载并安装pandoc.这可能吗?

(我知道我可以手动执行此操作,但是当我向学生展示时 - 我可以在R代码块中组织的步骤越多越好)

dar*_*zig 12

如果只是下载最新版本的安装程序并从R启动它:

  1. a)确定最新版本的Pandoc并在XML包的帮助下获取URL :

    library(XML)
    page     <- readLines('http://code.google.com/p/pandoc/downloads/list', warn = FALSE)
    pagetree <- htmlTreeParse(page, error=function(...){}, useInternalNodes = TRUE, encoding='UTF-8')
    url      <- xpathSApply(pagetree, '//tr[2]//td[1]//a ', xmlAttrs)[1]
    url      <- paste('http', url, sep = ':')
    
    Run Code Online (Sandbox Code Playgroud)

    b)或者应用一些regexp魔术,感谢@ G.Grothendieck(不需要这样的XML包):

    page <- readLines('http://code.google.com/p/pandoc/downloads/list', warn = FALSE)
    pat  <- "//pandoc.googlecode.com/files/pandoc-[0-9.]+-setup.exe"
    line <- grep(pat, page, value = TRUE); m <- regexpr(pat, line)
    url  <- paste('http', regmatches(line, m), sep = ':')
    
    Run Code Online (Sandbox Code Playgroud)

    c)或者,如果您有这样的想法,只需手动检查最新版本:

    url <- 'http://pandoc.googlecode.com/files/pandoc-1.10.1-setup.exe'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将文件下载为binary:

    t <- tempfile(fileext = '.exe')
    download.file(url, t, mode = 'wb')
    
    Run Code Online (Sandbox Code Playgroud)
  3. 只需从R运行它:

    system(t)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 安装后删除不必要的文件:

    unlink(t)
    
    Run Code Online (Sandbox Code Playgroud)

PS:对不起,仅在Windows XP上测试过

  • 要删除XML但仍然提取确切的文件名,请尝试:`pat < - "// pandoc.googlecode.com/files/pandoc-[0-9.]+-setup.exe"; target.line < - grep(pat,page,value = TRUE); m < - regexpr(pat,target.line); regmatches(target.line,m)`(`http`仍需要预先添加.) (3认同)
  • 嗨Daroczig和Grothendieck.基于这个线程,我决定创建一个带有install.x类型函数的R包.我已经在这里发布了它:https://github.com/talgalili/installr/并且会感谢任何评论(包括你是否想要在某个地方信用,你认为你应得的.我已经在一些功能中给了一些.但我可能错过了一些东西).再次,非常感谢你.塔尔 (2认同)