UI代碼:如何計算Shiny中textInput框中的數據?
===
library(shiny)
shinyUI(
# Use a fluid Bootstrap layout
fluidPage(
# Generate a row with a sidebar
sidebarLayout(
# Define the sidebar with one input
sidebarPanel(
sliderInput("capacity", "Current Capacity:",
min=0, max=100, value=10),
c(list(
textInput("service", "Service Component Name", ""),
actionButton("addbtn", "Add Component"))),
#lapply(seq(10), function(i) uiOutput(paste0("ui", i)))
br(),
br(),
br(),
br(),
br(),
actionButton("calcbtn", "Calculate Projection")
),
# Create a spot for the barplot
mainPanel(
textInput("inputWork","Volume", width="200px"),
textInput("inputGrowth","Growth Rate", width="100px"),
lapply(seq(10), function(i) uiOutput(paste0("ui", i)))
#tags$p("Web"),
#verbatimTextOutput("input_type_text")
)
)
)
)
服務器代碼:
server <- function(input, output)
{
observeEvent(input$addbtn, {
n <- isolate(input$addbtn)
if (n == 0) return()
# create n-th pair of text input and output
output[[paste0("ui", n)]] <- renderUI(
list(textInput(paste0("textin", n), isolate(input$service)),
textOutput(paste0("textout", n))))
# display something in the output
output[[paste0("textout", n)]] <- renderText({
work<-as.numeric(input$inputWork)
growth<-as.numeric(input$inputGrowth)
print(growth)
#paste("projection", (100+growth)*as.numeric(input[[paste0("textin", n)]]))
})
})
observeEvent(input$calcbtn, {
n <- isolate(input$calcbtn)
if (n == 0) return()
output[[paste0("textout", n)]] <- renderText({
work<-as.numeric(input$inputWork)
growth<-as.numeric(input$inputGrowth)
project<-growth+as.numeric(input$service)
print(growth)
print(project)
paste("projection", ((1+growth/100)*as.numeric(input[[paste0("textin", n)]])))
})
})
}
這就是我要做的。此代碼將有一個初始文本框和提交按鈕。用戶在第一個輸入文本中放置文本,單擊submitbutton,在主面板中生成一個新文本。用戶可以多次執行此操作以在主面板中創建多個textInput框。
我在主面板的頂部還有一個靜態的另一個inputText框,標籤爲Workload。
所以,這就是我想要做的事:
- 用戶將插入工作量textIntut數據(它需要的數字)。
- 用戶將數據插入到其他動態生成的textInput框(全部需要是數字)。
- 我將從工作負載和所有其他文本框中獲取值,執行一些計算和預測,並在每個動態生成的textInput框旁邊顯示數據,如果我可以在旁邊插入文本框生成以顯示我的輸出。
例如,我在我的工作負載中有數據,我已經生成了Web_server,App_server textInput框。我將從工作負載中提取數據,並根據web_server中的數據進行分類,並將其顯示在web_server textInput框(在文本框中顯示數據)旁邊,對app_server textInput框執行相同操作。
任何想法,我怎麼可以做到這一點閃亮?這是我想要完成的圖像。考慮到從用戶輸入的工作負載增長率以及來自用戶輸入部分的其他輸入,我將不得不計算並填充各個文本框。下面
如果您所說的數據是單個數字,則應該使用'numericInput'。否則,您需要在服務器代碼中進行一些驗證和轉換(將字符串轉換爲數字) –
有兩個問題。 (1)你知道動態創建的輸入框的最大數量嗎?或者您需要接受用戶想要的多少? (2)您能否顯示一個示例UI來顯示計算結果?這將是textOutput關聯的textInput? –
1)沒有最大數量的文本框,它可以與用戶輸入一樣多。 2)是,與textInput關聯的textOutput。他們可以並排嗎? – user1471980