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)]])))
})
})
}
これは私がやろうとしていますものです。このコードには、最初のテキストボックスと送信ボタンがあります。ユーザーは、最初の入力テキストにテキストを入力し、サブミット・ボタンをクリックします。メイン・パネルに新しいテキストが生成されます。ユーザーはこれを複数回実行して、メインパネルに複数のtextInputボックスを作成することができます。
また、メインパネルの上にワークロードという名前の静的な別のinputTextボックスがあります。
だから、これは私がしようとしているものです:
- ユーザーは、(それが数値に必要)ワークロードtextIntutにデータを挿入します。
- ユーザは、動的に生成される他のテキスト入力ボックスにデータを挿入します(すべて数字でなければなりません)。
- ワークロードと他のすべてのテキストボックスから値を取得し、計算と投影を行い、動的に生成されたtextInputボックスの横にデータを表示します。出力を表示するためにテキストボックスを挿入するといいでしょう。
たとえば、ワークロードにデータがあり、Web_server、App_server textInputボックスが生成されています。ワークロードからデータを取り出し、web_serverのデータで除外し、web_serverのtextInputボックスの隣に表示する(テキストボックスにデータを表示する)場合は、app_serverのtextInputボックスでも同じ操作を行います。
どのように私は光沢の中でこれを行うことができますか?これは私が達成しようとしているイメージです。ユーザーから取得したワークロードの増加率とユーザー入力セクションからの他の入力を考慮すると、それぞれのテキストボックスを計算して入力する必要があります。
あなたが言ったデータが単一の数値である場合は、「numericInput」を使用する必要があります。それ以外の場合は、サーバーコードで検証と変換を行う必要があります(文字列から数値への変換) –
2つの質問。 (1)動的に作成される入力ボックスの最大数を知っていますか?または、ユーザーが望む数だけ受け入れる必要がありますか? (2)計算結果をどのように表示するかのUI例を表示できますか?それはtextOutputに関連付けられたtextInputですか? –
1)最大数のテキストボックスはありません。ユーザー入力と同じ数にすることができます。 2)はい、textInputはtextInputに関連付けられています。彼らは並んでいることができますか? – user1471980