首先,我认为您需要传递令牌本身而不是 .rds 文件:
token <- readRDS("token.rds")
正如错误消息所述,data.csv 很可能存在于您的工作目录中。您可以使用file.exists("data.csv") 进行检查。如果它返回TRUE你的文件已经存在,那么你有3个选项:
- 使用
if 语句
用 if 语句检查文件是否存在,如果不存在则只下载:
if( !file.exists("data.csv")) {
drop_download("data.csv", dtoken = token)
}
- 设置
overwrite = T
如果您认为这是文件的更新版本,您可以将 overwrite 参数设置为 TRUE
drop_download("data.csv", dtoken = token, overwrite = T)
-
仅当 Dropbox 版本较新时才下载:
- 如果文件不存在,请下载文件
- 如果没有,请检查 Dropbox 版本是否已更新。
像这样:
if( !file.exists("data.csv")) {
drop_download("data.csv", dtoken = token)
} else {
if (file.info("data.csv")$mtime < drop_get_metadata("data.csv")$client_modified) {
drop_download("data.csv", dtoken = token)
}
}
请注意,Dropbox 元数据上的时区可能不同,从而导致意外结果。
编辑:
如果您想从dropbox 读取文件,请使用drop_read_csv。
这是一个最小的闪亮应用程序,如果你应该可以工作:
- 使用
drop_auth() 和saveRDS 创建"token.rds"
- 将名为
"data.csv" 的文件上传到 dropbox 上的根文件夹。
代码:
library(shiny)
token <- readRDS("token.rds")
new_data <- drop_read_csv("data.csv")
ui <- fluidPage(
tableOutput("table")
)
server <- function(input, output, session) {
output$table <- renderTable( {
new_data
})
}
shinyApp(ui, server)