微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Global R环境中加载动态数据帧?

如何解决如何在Global R环境中加载动态数据帧?

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

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

我想知道是否有一种方法可以避免使用“导出到数据集”按钮,而不是使用这种方法,将树加载到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()),.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" 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。