我正在使用闪亮的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)
谢谢!
在您的桌面上,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"