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

Posted

技术标签:

【中文标题】向量的长度包含来自 textInput 小部件的输入【英文标题】:Length of vector contains input from textInput widget 【发布时间】:2015-05-30 06:02:45 【问题描述】:

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

我是 Shiny 的新手,我在简单计算 inputText() 小部件捕获的矢量长度时遇到问题。问题是不管vector的内容如何,​​length函数的结果总是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】:

问题很简单,你想找到字符向量的长度,但是 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())
  ) 
)

【讨论】:

当然!那太简单了。谢谢你的帮助。

以上是关于向量的长度包含来自 textInput 小部件的输入的主要内容,如果未能解决你的问题,请参考以下文章

在 TextInput 小部件中设置单个单词的样式

(Kivy/Python)当用户点击输入时从 textinput 小部件存储文本

使 Kivy TextInput 框架不可见但显示文本

通过 textinput 添加新项目时,阻止 QScrollArea 项目跳来跳去

使用来自另一个类的实例访问有状态小部件的变量时,在 null 上调用 getter 长度

Flutter FutureBuilder 小部件动态列表长度