向量的长度包含来自textInput小部件的输入

时间:2015-03-26 09:20:42

标签: r shiny textinput

我有一个完整的R脚本,它将对捕获的(readline())数字进行所有计算,但是我想创建带有用户界面的应用程序,并且我在开头就停留了。

我是Shiny的新手,我有一个简单计算inputText()小部件所控制的矢量长度的问题。问题是无论向量的内容如何,​​长度函数的结果总是为1。

提前感谢您的帮助。

ui.R - 文件

library(shiny)

shinyUI(fluidPage(

  titlePanel("Number App"),

  sidebarLayout(
    sidebarPanel("This is sidebar panel",
                 textInput("number", "Number:", value=""),
                 submitButton(text = "Submit Number", icon = NULL)
    ),
    mainPanel("This is main panel",
              textOutput("text1")
    )
  )
)) 

server.R

library(shiny)

shinyServer(function(input, output) {
  x <- reactive(as.numeric(input$number))
  y <- reactive(strsplit(as.character(x()), ""))
  z <- reactive(length(y()))

  output$text1 <- renderText({
    paste("Captured Number:", x(), "Splitted Number:", y(), "Length of Number: ",  z())
  }) 
})

1 个答案:

答案 0 :(得分:1)

问题很简单,你想找到字符向量的长度,但是strsplit返回列表。您已经传递了单个输入字符串和模式,您可以返回列表的第一个元素(如果有的话)。

试试这个

library(shiny)

shinyServer(function(input, output) {
  x <- reactive(as.numeric(input$number))
  y <- reactive(strsplit(as.character(x()), "")[[1]])
  z <- reactive(length(y()))

  output$text1 <- renderText({
    paste("Captured Number:", x(), "\tSplitted Number:", y(), "\tLength of Number: ",  z())
  }) 
})