如何在R的setwd()命令中断行?

时间:2012-03-05 17:50:53

标签: r

我尝试将所有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 = "")

哪个有效,但为了尊重一些自定义的规则,似乎有很多混乱。

有没有更优雅的方法来实现这一目标?

4 个答案:

答案 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)

实现这一目标的优雅方式(或至少我现在能想到的方法):

  1. 在目录中添加别名,以便您可以在R脚本中更轻松地引用它们。例如,我的项目位于~/Documents/Work/Active Projects/Project name/code/但我有一个简单的别名,以便在我引用此类文件/数据时可以使用~/code/project name/

  2. 您可以在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")