使用 readOGR 的相对路径有所不同,具体取决于 R 脚本还是 rmarkdown

标签 r r-markdown rgdal ogr

在我的常规 .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/

相关文章:

r - 修改未绘制的 gList 列表

在许多不同的数据集上运行 R Markdown 并分别保存每个编织的 word 文档

r - 将 shapefile 从目录批量加载到 R 中

r - 如何更改箱线图的边界颜色?

R:使用 TLS/SSL 安全下载数据

r - 在 R 中使用 forecast() 时获取预测值

r - 从 x 和 y 以米为单位猜测坐标系,并近似对应的 long 和 lat

r - knitr 不支持 SQL 公用表表达式中的语法高亮吗?

html - 在 knitr 中加快 fig.show 间隔

R:SpatialPointsDataFrame 代码不再有效。 !res[[1]] 中的错误:无效的参数类型