检测我在哪台计算机上 运行 R 脚本

detect which computer I'm running an R script on

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

我有两台电脑,运行ning 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))
}

如果您致电 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))
}