ยังไงเพื่อเพิ่มปรับปรุง(การปรับปรุงใหม่)ปุ่มที่ appสเปนเซอร์รี้ดครับ R

0

คำถาม

ฉันเพิ่มปุ่มแต่งค่าโดยอัตโนมัติจะเปลี่ยนก่อนที่ฉันเจอ"ปรับปรุงคำสั่ง"ฉันไม่รู้วิธีซ่อมมันได้ ควรจะเป็นแบบนี้:ป้องภาพรายละเอียดอยู่ด้านล่างของฉันคือรหัส:

library(shiny)
ui <- fluidPage(
 titlePanel("My Simple App"),
 
 sidebarLayout(
   sidebarPanel(
     helpText("Controls for my app"),
     
     selectInput("fruitchoice", 
                 label = "Choose a fruit",
                 choices = list("Apples", 
                                "Oranges",
                                "Mangos", 
                                "Pomegranate"),
                 selected = "Percent White"),
     
     sliderInput("amt", 
                 label = "Order Amount:",
                 min=0, max = 100, value=20),
     
     actionButton ("Update","Update Order")
   ),
   
   mainPanel(
     helpText("Fruit Chosen:"),
     verbatimTextOutput("fruit"),
     helpText("Order Amount"),
     verbatimTextOutput("amt")
   )
 )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

   SelectInput <- eventReactive (input$Update , {
   runif(input$fruitchoice,amt)
  })
   output$fruit = renderText(input$fruitchoice)
   output$amt = renderText(input$amt)
}
# Run the application 
shinyApp(ui = ui, server = server)
r shiny
2021-11-24 05:38:40
2
0

ฉันจะแสดงให้ดูว่าต้องเขียนรหัสของคุณต้องเอาไปปรับปรุงพฤติกรรมอย่างไรก็ตามฉันอยากจะยังได้คุณก็รู้ว่าเรื่องนี้มันส่วนหนึ่งของรหัส:

SelectInput <- eventReactive (input$Update , {
   runif(input$fruitchoice,amt)
  })

มันผิดสำหรับสามคนด้วยเหตุผล:(1)วัตถุ amt ยังไม่มีอยู่จริงคุณอาจจะต้องการ input$amt;(2)แม้ว่าคุณเปลี่ยน amt ต้อง input$amt รหัสไม่ได้ทำงานและคุณจะได้เกิดข้อผิดพลาด;(3)ตอนนี้คุณไม่ได้ใช้ SelectInput อยู่ในสถานที่อยู่ในโปรแกรมของคุณดังนั้นมันไม่มีเหตุผลอะไรสำหรับส่วนนี้จะอยู่อย่างไรก็ตามที่ฉันไม่รู้ว่าอะไรคือจุดมุ่งหมายของคุณแล้วจะดูรอบสุดท้ายโปรแกรอฉันไม่ได้บอกว่านี่คือโดยทั่วไปคิดผิด

โอเคงั้นตอนนี้เรื่องปรับปรุงปุ่ม เราจะโฟกัสเรื่องนี้รหัส:

output$fruit = renderText(input$fruitchoice)
   output$amt = renderText(input$amt)

นี่คุณ instruct โปรแกรม(ส่ง)จัดการพาตอนที่ข้อความ input$fruitchoice หรือ(อยู่ในที่สองเส้น)เมื่ input$amt เปลี่ยนแปลงแต่คุณต้องการ(กา)จัดการพาข้อความเดียวตอนที่ผู้ใช้ลิกที่ปุ่มดังนั้นคุณต้องการสองอย่าง-ก่อนจะมั่นใจว่าผู้ใช้อมีการคลิกที่ปุ่มและไม่(ใหม่)จัดการพาข้อความ\\n ในเมื่อใครซักคน input$ เปลี่ยนแปลง มันจะทำงาน:

output$fruit = renderText({
    req(input$Update)
    isolate(input$fruitchoice)
    })
  output$amt = renderText({
    req(input$Update)
    isolate(input$amt)
    })

ถ้าฉันเข้าใจเปล่งประกายอย่างถูกต้อง, isolate() ทำให้แน่ใจว่าข้อความนั้นคือไม่(ใหม่)การแสดงผลเมื่อ input$ เปลี่ยนแปลง(ย่างไรก็ตามมันภายในร่างกายใหม่ของค่า)และ req() ทำให้แน่ใจว่า input$Update คือมีการคลิก;และเมื่อมีการคลิกอีกครั้งเปล่งประกา recomputes[(ใหม่)renders]ข้อความ มัน recomputes เพราะเราไม่ได้ใช้ isolate()input$Update ฉันคิดว่านะ

2021-11-24 09:37:42
0

มีบางอย่างผิดอยู่ในนรหัสของพ่อ ฉันจะให้นิดหน่อธิบายสำหรับแต่ละหนึ่ง:

คุณกำลังเริ่มการทำงานกับ reactive inputs. โดยการใช้ renderText(input$...) คุณสร้างข้อความผลลัพธ์ที่ปรับปรุงอัตโนมัติเมื่อข้อมูลของคุณรายงานแล้ว โดยอัตโนมัติคือปัญหาที่นี่คุณไม่อยากให้เป็นอย่างนั้นหรอก เรากำลังจะไปเขียนเป็นทางเลือกวิธีการที่ร้านขายที่ inputs แยกเป็นตัวแปรนั้นเราแค่อนุญาตให้ต้องถูกอัปเดตอนที่ปุ่. เราเริ่มการใช้งานตัวแปรเหมือนแล้ว:

rv <- reactiveValues(fruit = "Apples",
                       amt = 20)

EventReactive สร้าง reactive ตัวแปรมันได้ทีหลังถูกใช้ในการรหัสหรอก โดยปกติการพูดสิ่งที่คุณต้องการที่จะใช้ในพวกนี้เป็นของเหตุการณ์จำลองคือ observeEvent. คุณสามารถทำเช่นนั้นเหมือนนี้:

observeEvent (input$Update , {
    rv$fruit <- input$fruitchoice
    rv$amt <- input$amt
  })

ตอนนี้เรามีรายชื่อของตัวแปรภายใต้ชื่อ"วี"และเป็น observeEvent นั่นปรับปรุงตัวแปรนี้ทุกครั้งปุ่มก็ได้ค่ะ ทุกอย่างที่เหลืออยู่ต้องทำคือสร้าง renderText ซึ่งคุณสามารถทำอย่างงั้น:

output$fruit <- renderText(rv$fruit)
output$amt <- renderText(rv$amt)
2021-11-24 10:22:43

ไม่ใช่มันผิดพฤติกรรมเพื่อเอา render* ข้างใน observe หรือ reactive? ฉันส่งอีเมล์. โดยปกติแล้วการซ้อนในที่ทำงานอยู่-reactive?
gss

ฉันคิดว่ามันไม่ใช่ความคิดที่ดี ฉันจะปรับปรุงเต็มที่สังเกตุการณ์/reactiveVal คำตอบ
Wietse de Vries

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่