通过选择shapefile.shp作为文件输入来在R Markdown中编织参数

问题描述

我正在尝试使用带有参数的Knit将R Markdown脚本渲染为PDF。我希望其他人能够使用YAML标头生成的UI呈现报告。我想使用shiny controlfile)作为参数输入,而不是通用文本(即,UI打开一个窗口,用户可以在其中从文件资源管理器中选择文件)。

最小的可复制示例:

我首先创建sf软件包nc.shp的副本,以便在测试UI时可以轻松找到它:

library(sf)
sf_nc <- sf::st_read(system.file("shape/nc.shp",package = "sf"),quiet = TRUE)
sf::st_write(sf_nc,'C:/Temp/nc_temp.shp')

这是R Markdown(.rdm)文件

---
title: "Params_Test"
output: pdf_document

params:
  shp_program: 
    input: file
    label: 'NC Shapefile'
    value: 'C:/Temp/nc_temp.shp'
    multiple: FALSE
    buttonLabel: 'browse shapefiles'
---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```


```{r,eval = TRUE,include = TRUE}

library(sf)
library(ggplot2)

sf_nc_temp <- sf::st_read(params$shp_program)

plot <- ggplot2::ggplot(sf_nc_temp) +
  geom_sf(aes(color = NAME)) +
  geom_sf_text(aes(label = NAME)) 
plot

```

当我仅使用认值编织时(编织下拉图标>使用参数编织>编织),该工具运行良好。这会将shapefile路径的字符串用作文本。

enter image description here

但是,当我尝试从UI中选择shapefile时,出现以下错误消息:第20行错误:无法打开'C:\ Users \ username \ AppData \ Local \ Temp \ 1 \ Rtmp8gVT2L \ file2784148636a \ 0.shp “;来源可能已损坏或不受支持。有关受支持格式的列表,请参见st_drivers()

enter image description here

我尝试根据How do I access the data from a file passed as parameters in a RMarkdown document?

替换该块
library(sf)
library(ggplot2)

cat(params$shp_program)
c <- sf::st_read(params$shp_program)
c

plot <- ggplot2::ggplot(c) +
  geom_sf(aes(color = NAME)) +
  geom_sf_text(aes(label = NAME)) 
plot

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)