在我的常规 .R 脚本中,我使用相对路径来使用 rgdal::readOGR
读取数据:
library(rgdal)
pts <- readOGR("data/points.gpkg")
但是 Rmd 文档中 R 代码片段中的相同代码:
```{r}
pts <- readOGR("data/points.gpkg")
```
返回以下错误:
Error in ogrListLayers(dsn = dsn) : Cannot open data source
如果我使用此错误即可解决
```{r}
pts <- readOGR("../data/points.gpkg")
```
但我无法在常规 .R 脚本中使用该路径字符串。如果我想复制在 R 脚本中编写的代码以在 R markdown 文档中使用,这会令人沮丧。
我有两个问题:
1)为什么会发生这种情况?
2) 如何编写路径,以便它们同时在 .R 和 .Rmd 文档中运行
最佳答案
Rmd 文档的默认工作目录就是它所在的目录。您有很多选择:
- 使用完整文件路径(对您有好处,但不能移植到其他计算机)
- 将 Rmd 文件放入用于 R 脚本的工作目录
- 将 R 脚本放入包含 Rmd 文件的目录中
- 在第一个 Rmd 代码块中设置工作目录
- 编写脚本以向文件路径添加前缀,在 R 脚本中将前缀设置为
"./"
,在 Rmd 中将前缀设置为"../"
(如果你想变得更有趣,你可以自动检测到这一点) - 不要重复您的代码:仅使用脚本或仅使用 Rmd
还有很多类似的变体。
关于使用 readOGR 的相对路径有所不同,具体取决于 R 脚本还是 rmarkdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345334/