我尝试将所有R脚本行保持在80个字符以下。无论何时涉及到字符串,这都可能是一个挑战,但通常只是在不使用任何特殊字符的情况下打破行,如下所示:
plot(x, y, main = "some reeeealy long title, so long that
I need to break it into several lines
in order to satisfy my ****-retentive
self.")
然而,setwd()
之类的某些功能不允许我这样做。例如,运行
setwd("/folder/another folder/yet another folder/
what are you doing, hiding pr0n?/I think I've made my point/")
返回以下错误:
Error in setwd("/folder/another folder/yet another folder/\n
what are you doing, hiding pr0n?/I think I've made my point/") :
cannot change working directory
我尝试过除了斜线角色以外的不同点上的刹车线,但我无法让它起作用。我能找到的唯一解决方法是运行
setwd(paste("/folder/another folder/yet another folder/",
"what are you doing, hiding pr0n?/I think I've made my point/",
sep = "")
哪个有效,但为了尊重一些自定义的规则,似乎有很多混乱。
有没有更优雅的方法来实现这一目标?
答案 0 :(得分:5)
一般来说,paste
是我能想到的唯一方式,但是,在这种特殊情况下,file.path
是比paste
更好的选择,因为它提供了正确的分隔字符你的平台自动。
file.path("/folder", "another folder", "yet another folder",
"what are you doing, hiding pr0n?",
"I think I've made my point")
答案 1 :(得分:1)
将它们粘贴在一起,如下所示:
x <-paste("/folder/another folder/yet another folder/",
"what are you doing, hiding pr0n?/I think I've made my point/",
"and for good measure/", sep="")
setwd(x)
答案 2 :(得分:1)
实现这一目标的优雅方式(或至少我现在能想到的方法):
在目录中添加别名,以便您可以在R脚本中更轻松地引用它们。例如,我的项目位于~/Documents/Work/Active Projects/Project name/code/
但我有一个简单的别名,以便在我引用此类文件/数据时可以使用~/code/project name/
。
您可以在options()
.rprofile
中存储很多内容。示例:options(Path='/really/long/path/to/something')
。然后你可以使用setwd(getOption('Path'))
答案 3 :(得分:1)
另一个黑客:组成一个setwd2
函数来删除换行符和相邻的空格(或者,冒着危险,掩盖内置的setwd
函数...将它存储在你的个人资料中等等。 / p>
setwd2 <- function(dir,debug=TRUE) {
setwd(gsub("\\n *","",dir))
}
测试:
setwd2("tmp/
tmp/
tmp")