在 R/Shiny 中获取本地文件数据
Posted
技术标签:
【中文标题】在 R/Shiny 中获取本地文件数据【英文标题】:Fetch local file data in R/Shiny 【发布时间】:2021-10-26 21:51:00 【问题描述】:根据https://github.com/jpowell96/readFilesWithFetch/blob/master/index.html 的想法,我正在尝试从“www”文件夹中的 .csv 文件中读取数据,但我只得到“正在读取文件”行并且未显示数据。我也尝试在 fetch (fetch(file:///C:/.../www/this_data.csv')) 中使用完整路径,但得到了相同的结果。
任何想法让它工作? (目前在 Windows 中工作,但最终会将其移植到 shinyapps.io。)
非常感谢
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
tags$div(
tags$html("Reading file"),
tags$script("
fetch('./www/this_data.csv')
.then(response => response.text())
.then(csvString =>
// Split the csv into rows
const rows = csvString.split('\n');
for (row of rows)
// Split the row into each of the comma separated values
console.log(row.split(','));
);
")
)
)
server <- function(input, output, session)
shinyApp(ui, server)
这是 this_data.csv:
Date,Open,High,Low,Close
1/2/2007,50.03978,50.11778,49.95041,50.11778
1/3/2007,50.2305,50.42188,50.2305,50.39767
1/4/2007,50.42096,50.42096,50.26414,50.33236
1/5/2007,50.37347,50.37347,50.22103,50.33459
1/6/2007,50.24433,50.24433,50.11121,50.18112
1/9/2007,49.99489,49.99489,49.80454,49.91333
1/10/2007,49.91228,50.13053,49.91228,49.97246
1/11/2007,49.88529,50.2391,49.88529,50.2391
【问题讨论】:
为什么你试图在客户端 javascript 中获取数据而不是在你的服务器函数中读取和解析它?你到底希望完成什么? 【参考方案1】:-
你需要将你的应用文件保存到
app.R
,就是这个名字。
在与应用文件相同的文件夹中,创建一个 www
文件夹并将您的 csv 添加到该 www
文件夹中。
当你从js中引用它时,去掉www
前缀。 www
中的每条路径都是相对路径。例如你有一个www/myfile.txt
,它就是myfile.txt
,或者如果你有另一个子文件夹www/sub1/file2.csv
,它就是sub2/file2.csv
。
你需要使用HTML
函数来包装和转义你的js代码,像>
这样的符号在HTML中有特殊的含义。
不需要shinyjs。
完整代码:
library(shiny)
ui <- fluidPage(
tags$div(
tags$html("Reading file"),
tags$script(HTML("
fetch('this_data.csv')
.then(response => response.text())
.then(csvString =>
// Split the csv into rows
const rows = csvString.split('\\n');
for (row of rows)
// Split the row into each of the comma separated values
console.log(row.split(','));
);
"))
)
)
server <- function(input, output, session)
shinyApp(ui, server)
如果你做了所有这些,你会看到:
【讨论】:
谢谢@Iz100,但“读取文件”后没有显示任何内容。关于版本,我有最新的闪亮 (1.6.0) 和 RStudio (1.4.1717)。其余:平台:x86_64-w64-mingw32,arch:x86_64,os:mingw32,system:x86_64,mingw32,major:4,minor:0.4,year:2021,month:02,day:15,svn rev:80002, version.string: R 版本 4.0.4 (2021-02-15) 您的代码不是为了显示文件而编写的,而只是为了加载文件。console.log
仅在 js 控制台中打印结果,就像您在 R 中使用 print
一样。UI 上不会显示任何内容。如果需要显示表格,则需要编写下游代码。这与您在此处提出的问题无关。
明白。谢谢。
真诚地,我以为内容会显示出来。我是否需要创建一个新问题才能知道如何显示内容?
是的,最好在不同的帖子中提问。以上是关于在 R/Shiny 中获取本地文件数据的主要内容,如果未能解决你的问题,请参考以下文章
尝试在本地浏览器中查看时,Docker R Shiny app 0.0.0.0 拒绝连接
如何知道(或指定)R shiny 使用的 localhost 端口(在本地运行时)