【问题标题】:How to open a local html file from R in an operating system independent way?如何以独立于操作系统的方式从 R 打开本地 html 文件?
【发布时间】:2012-06-13 16:53:04
【问题描述】:

如何以独立于操作系统的方式从 R 中打开本地 html 文件?

出于演示目的,假设文件名为 test.html 并且位于工作目录中。

最初的想法

  • system('gnome-open test.html')
    • 这适用于 Ubuntu
  • browseURL(paste('file://', getwd(),'test.html', sep='/'))
    • 这适用于 Ubuntu,但感觉有点像 hack,我不确定它是否适用于 Windows。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可能会发现我的open.file.in.OS 函数很有用,可以在here 找到源代码。

    关于此函数作用的简短摘要:

    1. 检查平台
    2. 基于平台,调用:
      • shell.exec 在 Windows 上
      • opensystem 在 Mac 上
      • xdg-opensystem 在其他类 Unix 操作系统上
    3. 在私有文件上使用shQuote

    更新:现在查看pander 包中的openFileInOS

    library(pander)
    openFileInOS("d:/del/dt/a.html")
    

    参考资料:这个函数是 David Hajage 的 convert 函数的一个分支版本,可以在 here 找到。

    【讨论】:

    • +1 看起来真的很酷。对于我的特定应用程序,我想尽量减少依赖关系。因此,我还是更喜欢内置函数。
    • 好吧,您可以将该函数复制到您的主目录中的.Rprofile,而无需任何其他依赖项 - 并且拥有一个独立于操作系统的函数,可以在您的操作系统中打开任何文件格式。 否则只需使用类似openHTML <- function(x) browseURL(paste0('file://', file.path(getwd(), x)))
    • 谢谢,就是这样。 file.path 与 browseURL 的组合可能最能满足我当前的需求。
    • 嗨@JeromyAnglim,您可以使用daroczig 的pander 包的openFileInOS 功能。
    • 使用 pander 包你可以这样做:library(htmlwidgets) openFileInOS("d:/del/dt/a.html")
    【解决方案2】:

    我只是想将@daroczig 给出的答案从 cmets 中提取出来并作为答案。如果@darcozig 想将此作为单独的答案发布,我将删除此副本。

    openHTML <- function(x) browseURL(paste0('file://', file.path(getwd(), x)))
    

    【讨论】:

      【解决方案3】:

      使用file.path函数构造文件路径。

       file.path(..., fsep = .Platform$file.sep)
      
      
       ...: character vectors.
      
      fsep: the path separator to use.
      

      默认情况下,它将使用当前操作系统路径分隔符。

      例如

      > file.path ("", "home", "phoxis", "paragraph")
      [1] "/home/phoxis/paragraph"
      

      这会生成我的文件“/home/phoxis/paragraph”

      注意开头的空白字符串“”。在我的情况下,这会强制添加一个额外的“/”来生成绝对路径。根据您的需要调整以生成绝对或相对路径并查看?file.path

      我认为这将满足您的需求

      【讨论】:

      • OP 希望运行适当的应用程序来启动文件,而不仅仅是构建一个与操作系统无关的路径。
      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 2013-06-14
      • 2017-07-19
      • 2018-06-21
      • 2010-09-14
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多