我正在寻找一个R函数来返回正在运行脚本的计算机的标识符,或者至少要区分两台已知计算机中的一台。
我有两台电脑,都运行Windows和RStudio。我使用办公室中的桌面和VPN上的笔记本电脑,通常使用相同的项目,总是使用RStudio。
我的脚本和永久数据集位于commmon存储库中。但是,由于该存储库的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))
}
答案 0 :(得分:6)
如果致电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))
}