【问题标题】:detect which computer I'm running an R script on检测我在哪台计算机上运行 R 脚本
【发布时间】:2016-01-14 01:51:58
【问题描述】:

我正在寻找一个 R 函数来返回正在运行脚本的计算机的标识符,或者至少可以区分两台已知计算机中的一台。

我有两台 PC,都运行 Windows 和 RStudio。我在办公室使用台式机,通过 VPN 使用笔记本电脑,通常在同一个项目上工作,总是使用 RStudio。

我的脚本和永久数据集位于一个公共存储库中。但是,由于该存储库的 I/O 速度很慢,因此我为临时文件保留了一个本地目录。

在桌面上,我有一个专用驱动器,每个项目都位于其文件夹 'D:/workspace/this_project/' 中。在笔记本电脑上,路径是 'C:/Users/myself/Documents/workspace/this_project/' 或只是 '~/workspace/this_project/'

目前,我在每个脚本的顶部保留两个 setwd() 语句,我只是依赖于其中一个会因为文件结构而失败的事实。

setwd('~/workspace/this_project') # will fail on the desktop
setwd('D:/workspace/this_project') # will fail on the laptop

这似乎是一种不好的做法。

我查看了?"environment variables",但不知道如何在网络上获取我的计算机名称或其他持久且唯一的计算机名称。

所需的解决方案可以将笔记本电脑的波浪号扩展修改为笔记本电脑上的D:/,以便可以使用通用的“~/workspace/”,或者像这样的函数using_laptop()

set_project_wd <- function(folder_nm){
  if(using_laptop()) setwd(paste0('~/workspace/',folder_nm))
  else setwd(paste0('D:/workspace/',folder_nm))
}

【问题讨论】:

    标签: r rstudio


    【解决方案1】:

    如果您致电Sys.info(),您可以获得您的详细信息:

    names(Sys.info())
    [1] "sysname"        "release"        "version"        "nodename"       "machine"        "login"         
    [7] "user"           "effective_user"
    

    nodename 下的条目将是您的电脑名称。

    然后你可以这样做:

    set_project_wd <- function(folder_nm){
      if(Sys.info()[[4]]=="mylaptopname") setwd(paste0('~/workspace/',folder_nm))
      else setwd(paste0('D:/workspace/',folder_nm))
    }
    

    【讨论】:

    • Sys.info()['nodename'] 有效,谢谢!我检查了sessionInfo...?Sys.info 指向另见sessionInfo 的链接,但不幸的是不是相反。这也有助于记录用户。附言好企鹅。
    • 在 Windows 上工作时效果很好。在 Mac 上,通过 VPN 连接到我的大学时,节点名称会发生​​变化。
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2021-09-01
    • 2017-04-29
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多