R 使用文本输入创建数据框

R 使用文本输入创建数据框,r,shiny,shiny-server,R,Shiny,Shiny Server,尝试创建如下所示的数据帧 X Y 20 30 使用textInput创建数据框。 但在文本区域中输入的值未正确分配给数据框。 你能帮帮我吗 用户界面 服务器.R library(shiny) shinyServer(function(input,output,session){ data1= reactive({ if(input$submit!=0){ isolate({ data.frame(paste(input$datavalues))

尝试创建如下所示的数据帧

X   Y
20  30
使用textInput创建数据框。
但在文本区域中输入的值未正确分配给数据框。

你能帮帮我吗

用户界面

服务器.R

library(shiny)
shinyServer(function(input,output,session){

  data1= reactive({
    if(input$submit!=0){
      isolate({
        data.frame(paste(input$datavalues))
      })
    }
  })

  output$datatable<-renderPrint(function(){
    if(!is.null(data1())){
      d<-data1()
      print(d)
    }
  })


})
库(闪亮)
shinyServer(功能(输入、输出、会话){
数据1=无功({
如果(输入$submit!=0){
隔离({
数据帧(粘贴(输入$datavalues))
})
}
})

output$datatable我建议使用shinyIncubator包的matrixInput函数。我在这里做了一个演示:。您可以从RStudio使用以下命令运行它:

library("shiny")
runGist("https://gist.github.com/anonymous/8207166")
但要根据您的代码回答您的问题,下面是一个有效的修改获取允许您控制data.frame显示的参数。使用matrixInput函数的优点是,您可以使数据帧的大小成为被动的,而下面的数据帧则硬编码为2变量数据帧

用户界面 服务器.R
库(“闪亮”)
shinyServer(
功能(输入、输出、会话){
数据=无功({
如果(输入$submit>0){

df您需要像解析任何其他文本体一样解析文本字段中的数据。对于初学者,尝试将静态文件中的数据读入data.frame。一旦工作正常,然后尝试将其合并到Shiny中。特别是,请检查read.csv或read.table函数,以使用表格文本创建data.frames。我尝试了数据。frame(eval(parse(input$datavalues)))。但它不起作用。是的。请查看
read.table()
的文档。您可以通过键入命令
?read.table
,将其拉出。这是您想要使用的函数。您甚至可以找到
read.table(“yourFileName.txt”)
马上就可以了。然后你可以开始研究如何使用文本字符串而不是文件。我不想使用现有的文件。我只想在shiny中使用文本输入创建一个只有一行的数据集。这对非数字输入也很有帮助。谢谢。要点对我不起作用。>library(“shiny”)>runGist()rawToChar中的下载错误(块[序号(ns)]):字符串中嵌入nul:“PK\003\004\n\0\0\0\0\0T\034!D\0\0\0\0\0\0\0\0\0\0\0\017\0\t\08207166 master/UT\005\0\001PýýRPK\003\004\n\0\0\0\0\b\0T\034!Dt\k\002\0\001\0\0\0\0\0\013;\001\0\0\t\08207166 master已经超过1年了,这个答案可能已经过时,现在经常没有向后兼容性更新(因为这个原因我停止了使用)。另外,shinyIncubator包是实验性的,如果我记得正确的话。@Deleet,我也遇到了同样的错误。将代码复制并粘贴到一个新的shinyIncubator项目中。它运行得很好。
library("shiny")
runGist("https://gist.github.com/anonymous/8207166")
library("shiny")    
shinyUI(
  pageWithSidebar(
    headerPanel("textInput Demo")
    ,
    sidebarPanel(
      wellPanel(
        textInput('x', "enter X value here","")
        ,
        textInput('y', "enter Y value here","")
        ,
        actionButton("submit","Submit")
      )
    )
    ,
    mainPanel(uiOutput('table'))
))
library("shiny")
shinyServer(
  function(input,output,session){

    Data = reactive({
      if (input$submit > 0) {
          df <- data.frame(x=input$x,y=input$y)
          return(list(df=df))
      }
    })

    output$table <- renderTable({
        if (is.null(Data())) {return()}
        print(Data()$df)
      }, 'include.rownames' = FALSE
       , 'include.colnames' = TRUE
       , 'sanitize.text.function' = function(x){x}
    )

})