我有一个完整的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())
})
})
答案 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())
})
})