【问题标题】:How load a dynamic data frame in Global R environment?如何在 Global R 环境中加载动态数据框?
【发布时间】:2021-01-15 09:22:05
【问题描述】:

我正在使用闪亮的 java 脚本开发决策树应用程序。

我有一个动态树的结构,用户可以在其中创建新的分支和节点,当用户完成他的树的构建时,他可以按一个按钮并将树的结构导出到 txt 文件中。

我想知道是否有办法避免按钮“导出到数据集”,而是在 R 全局环境中加载树,就像动态数据框一样。

用于导出树的 Java 脚本函数

/*
 * Print out CSV of tree: node names
 */
function printCSV() {   
    var csv = "";
    
    if (root.children) {
        
        root.children.forEach(function (d) {
            csv = csv + getCSVstring(d, "-", "", 0);
        })
    }

    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/text,' + encodeURI(csv);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'TreeDataSet.txt';
    hiddenElement.click();

}

HTML 代码

<button id="exportToMatrix" onclick="printCSV();">Export To DataSet</button>

app.R

library(shiny)

server = function(input, output, session){
    
    x <- output$contents <- renderText({    
        data2 <<- read.table("exportToMatrix")
        assign(data2,envir=.GlobalEnv)
        print(summary(data))
    })
    
}

# Run the application 
shinyApp(ui = htmlTemplate("www/Tree.html"), server)

谢谢!

【问题讨论】:

  • 如果您总是使用shinyApp 在控制台上运行它,那么也许从runApp 返回一个值?见stackoverflow.com/a/27366929/3358272
  • 但是我不想停止shinyApp,因为用户要修改应用程序我想要的是加载我使用函数 printCSV() 但在RStudio 的全球环境。谢谢!
  • 但是由于闪亮的应用程序正在运行,你无论如何都不能在全局环境中做任何事情......那为什么你需要将中间值保存到全局环境中?
  • 我在后台运行应用程序,所以我认为现在可以在 RStudio 环境中保存一个全局变量

标签: javascript r shiny r-environment


【解决方案1】:

在您的桌面上,assign 可以创建从 Shiny App 到 .GlobalEnv 的变量,请参见以下示例:

library(shiny)

ui <- fluidPage(
  actionButton("do", "Click Me")
)

server <- function(input, output, session) {
  counter <- reactiveVal(0)
  observeEvent(input$do, {
    counter(counter()+1)
    cat('Saving object ', counter(),'\n')
    assign(paste0("test",counter()), counter(),.GlobalEnv)
    
  })
}

shinyApp(ui, server)

每次点击后,都会在.GlobalEnv中创建一个新变量:

Saving object  1 
Saving object  2 
Saving object  3 
Saving object  4 


> ls()
 [1] "server" "test1"  "test2"  "test3"  "test4"  "ui" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2021-12-31
    • 2018-09-05
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多