gpt4 book ai didi

在脚本中使用 setwd() 的风险?

转载 作者:行者123 更新时间:2023-12-03 10:35:28 25 4
gpt4 key购买 nike

我听说它说使用 setwd() 是不好的做法。在脚本中。

  • 与之相关的风险/危险是什么?
  • 什么是更好的选择?
  • 最佳答案

    这是可重现代码的问题。如果您指定的目录在其他人的计算机上不存在,那么他们将无法使用您的代码。这对于绝对文件路径尤其糟糕,对于 Windows 文件路径尤其糟糕(在 Unix 系统上绝对不可能复制)。

    我的首选解决方案是在开始运行代码之前指定用户应该在他们自己系统上的相关目录中。如果为了您自己的方便您想放一个 setwd(...)就在代码的顶部,其他人可以注意到它并适本地将其注释掉,但是其余的代码仅假定来自该起始目录的相对路径,这对我来说没问题。

    谢益辉(knitr作者)对此感触特别深:

    https://groups.google.com/forum/?fromgroups=#!topic/knitr/knM0VWoexT0

    Whenever you want to manipulate files, they are assumed to be under the same directory of your source (e.g. Rnw documents). Then you can always use relative paths and you will never need to setwd(). Using setwd() contradicts with the principle of reproducibility, e.g. you use setwd('foo/bar/') and the directory may not exist in other people's computers. See FAQ 7: https://github.com/yihui/knitr/blob/master/FAQ.md



    从上述常见问题7:

    You'd better not do this [change working directory inside knitr code chunks]. Your working directory is always getwd() (all output files will be written here), but the code chunks are evaluated under the directory where your input document comes from. Changing working directories while running R code is a bad practice in general. See #38 for a discussion. You should also try to avoid absolute directories whenever possible (use relative directories instead), because it makes things less reproducible.



    另见: https://github.com/yihui/knitr/issues/38

    关于在脚本中使用 setwd() 的风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770304/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com