【问题标题】:Making R installation self-contained/user-independent使 R 安装自包含/用户独立
【发布时间】:2011-04-19 19:58:28
【问题描述】:

我试图让 R 忽略 c:\users\name\documents 并完全独立/便携

这是我的目录结构:

.../R/R-2.1.2.2/...
.../R/r_user/
.../R/libs_site/

我更新了我的 Rprofile.site 如下:

# Set the working directory
setwd( file.path( R.home() , ".." , "r_user" ) )

# set the home directory
Sys.setenv(HOME=file.path( R.home() , ".." , "r_user" )  )

# Set the site library folder
.Library.site = file.path( R.home() , ".." , "libs_site" )

当 R 启动时,我运行 .libPaths() 但我仍然看到 c:/users/...

所以也许 R 没有按照上面的 Sys.setenv 进行更新?解决方案?

【问题讨论】:

    标签: r shared-libraries


    【解决方案1】:

    根据我的经验,创建一个名为 Renviron.site 的文件并不能在我的所有 Windows 机器上工作,而将同一个文件命名为 .Renviron 却在所有地方都可以工作。不知道为什么。因此,如果您对上述建议有疑问,请尝试使用 .Renviron 作为名称。

    请不要犹豫对我的建议进行批判性评论,因为当我描述对我有用的方法时,它可能有我不知道的困难。

    根据我的经验,以下方法有效:

    Windows 和 Linux 平台:

    设置 R 路径

    找出默认路径: .libPaths()

    临时设置路径(在 R 脚本中)

    .libPaths( "F:/Rlib" )
    

    其中 F 可能是与 USB 驱动器相关联的字母。

    查询路径(Windows 和 Linux):

    Sys.getenv('R_LIBS_USER')
    Sys.getenv('R_LIBS')
    Sys.getenv('R_USER')
    Sys.getenv('R_DOC_DIR')
    Sys.getenv('HOME')
    

    也可以试试:

    normalizePath("~")
    

    也可以试试:

    getwd()
    setwd(dir)
    

    getwd 返回代表 R 进程当前工作目录的绝对文件路径

    setwd(dir) 用于设置工作目录为dir。

    Windows(测试时间:7x64)

    创建一个名为 .Renviron 的环境文件 将其放在工作目录或主目录中:

    "C:/Users/username/Documents"
    

    一些用户报告说 .Renviron 文件需要位于“c:/users/username/”中。如果您不确定将其放置在何处,请保存桌面历史记录并查看 .Rhistory 文件的位置。然后将您的 .Renviron 文件放在同一位置。保存历史 savehistory()

    # Windows .Renviron file:
    R_LIBS_USER="C:/R/library"
    R_USER="C:/R"
    R_DOC_DIR="C:/R"
    HOME="C:"
    

    设置全局路径 我的电脑/属性/高级系统设置/环境变量-->用户变量-->路径-->编辑 c:\R;c:\R\库;

    Linux(在 kUbuntu 12.10 上测试)

    创建一个名为 Renviron.site 的环境文件 把它放在:

    /etc/R/
    

    查询路径以检查您的系统是否正在读取 Renviron.site 文件。

    # Linux Renviron.site file:
    R_LIBS_USER="~/R/library"
    R_USER="~/R"
    R_DOC_DIR="~/R" 
    #HOME="/home" # may not be needed
    

    备注:afaik 文件是从下到上读取的,所以 HOME 定义在底部。在我的设置中 ~ 被正确分配给 /home/ 所以我还是省略了最后一行。

    如果您使用 RStudio,您可能还需要在 RStudio 程序目录中添加一个 rsession.conf 文件。以下对我有用:

    # Windows 7:
    r-libs-user="C:/R/library"
    # Kubuntu 12:
    # r-libs-user=~/R/%p-library/%v
    

    【讨论】:

      【解决方案2】:

      您可以在 [your R installation path]\etc 中使用行创建文件 Renviron.site

      HOME="${R_HOME}\..\r_user"
      R_LIBS_SITE="${R_HOME}\..\libs_site"
      

      其中设置了您的第二个和第三个设置。第一个可以替换为setwd(Sys.getenv("HOME"))

      【讨论】:

      • c:/users/... 仍然是 .libPaths() 中的第一项
      【解决方案3】:

      我使用 [你的 R 安装路径]\etc 中的 Rprofile.site 文件并添加以下行来制作 C:/R/library 每次启动 R 时我的默认库位置:

      # set a site library
       .Library.site <- file.path("C:/R/library")
       .libPaths(.Library.site)
      

      我在这里尝试了其他答案,但没有一个适用于 Windows 7 64 上的 R 2.13.1。

      【讨论】:

        【解决方案4】:

        添加这个就可以了:

        .Library.site = file.path( R.home() , ".." , "site-library" )
        .libPaths(.Library.site)
        

        【讨论】:

          猜你喜欢
          • 2020-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多