1

我正在使用闪亮的 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>

应用程序.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)

谢谢!

4

1 回答 1

0

在您的桌面上,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" 
于 2020-09-29T19:06:50.627 回答