質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

1202閲覧

R:shinyのBookmark機能を利用する際、csvファイルを読み込んでRDSファイルを読み込む方法

SOSEKI

総合スコア5

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2021/10/13 05:47

編集2021/10/15 01:09

以下のコードはたしかにブックマークし、復元することが可能ですが、これをui.Rとsever.Rにわけて記述できません。

library(shiny) library(shinyjs) library(utils) library(tools) library(stringi) ui <- function(request) { fluidPage( useShinyjs(), textInput("control_label", "This controls some of the labels:", "LABEL TEXT"), numericInput("inNumber", "Number input:", min = 1, max = 20, value = 5, step = 0.5 ), radioButtons("inRadio", "Radio buttons:", c("label 1" = "option1", "label 2" = "option2", "label 3" = "option3")), fileInput("restore_bookmark", "Restore Session", multiple = FALSE, accept = ".rds"), actionButton("save_inputs", 'Save Session', icon = icon("download")) ) } server <- function(input, output, session) { latestBookmarkURL <- reactiveVal() onBookmarked( fun = function(url) { latestBookmarkURL(parseQueryString(url)) } ) onRestored(function(state) { showNotification(paste("Restored session:", basename(state$dir)), duration = 10, type = "message") }) observeEvent(input$save_inputs, { showModal(modalDialog( title = "Session Name", textInput("session_name", "Please enter a session name (optional):"), footer = tagList( modalButton("Cancel"), downloadButton("download_inputs", "OK") ) )) }, ignoreInit = TRUE) # SAVE SESSION output$download_inputs <- downloadHandler( filename = function() { removeModal() session$doBookmark() if (input$session_name != "") { tmp_session_name <- sub("\.rds$", "", input$session_name) # "Error: Invalid state id" when using special characters - removing them: tmp_session_name <- stri_replace_all(tmp_session_name, "", regex = "[^[:alnum:]]") # TODO: check if a valid filename is provided (e.g. via library(shinyvalidate)) for better user feedback tmp_session_name <- paste0(tmp_session_name, ".rds") } else { paste(req(latestBookmarkURL()), "rds", sep = ".") } }, content = function(file) { file.copy(from = file.path( ".", "shiny_bookmarks", req(latestBookmarkURL()), "input.rds" ), to = file) } ) # LOAD SESSION observeEvent(input$restore_bookmark, { sessionName <- file_path_sans_ext(input$restore_bookmark$name) targetPath <- file.path(".", "shiny_bookmarks", sessionName, "input.rds") if (!dir.exists(dirname(targetPath))) { dir.create(dirname(targetPath), recursive = TRUE) } file.copy( from = input$restore_bookmark$datapath, to = targetPath, overwrite = TRUE ) restoreURL <- paste0(session$clientData$url_protocol, "//", session$clientData$url_hostname, ":", session$clientData$url_port, "/?_state_id_=", sessionName) # redirect user to restoreURL runjs(sprintf("window.location = '%s';", restoreURL)) # showModal instead of redirecting the user # showModal(modalDialog( # title = "Restore Session", # "The session data was uploaded to the server. Please visit:", # tags$a(restoreURL), # "to restore the session" # )) }) } shinyApp(ui, server, enableBookmarking = "server")

私のコードでは、csvファイルを読み込んだ状態でRDSファイルを読み込もうとしていますが、
ファイルを2つ読み込むと競合してしまうのでしょうか?
csvファイルを読み込まず各種inputを変更し、ブックマークすると、たしかに復元することができます。
しかし、CSVを読み込んだ後、RDSファイルを読み込むとブラウザは強制終了し、エラーが出ます。

ui <- function(request){ fluidPage( useShinyjs(), sidebarLayout( sidebarPanel( tabsetPanel(type="tabs", tabPanel("basic", fileInput("file", "Choose CSV File", accept = c( "text/csv", "text/comma-separated-values,text/plain", ".csv")), . . . Warning: Error in file: cannot open the connection

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

プロットするための、アクションボタンもRDSファイルに記憶されているため、RDSを読み込むとこれも実行されていた。

actionButton("submit", "plot")

投稿2021/10/16 12:03

SOSEKI

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問