📖 Scenario: You want to create a simple interactive web app using Shiny in R. This app will let users enter a number and see its square displayed immediately.
🎯 Goal: Build a Shiny app that takes a number input from the user and shows the squared value as output.
📋 What You'll Learn
Create a UI with a numeric input called num
Create a server function that calculates the square of num
Display the squared value in the UI using textOutput
Use renderText in the server to update the output dynamically
💡 Why This Matters
🌍 Real World
Shiny apps let you create interactive dashboards and tools for data analysis that anyone can use in a web browser.
💼 Career
Many data science and analytics jobs require building Shiny apps to share insights and reports interactively.
Progress0 / 4 steps
1
Set up the UI with a numeric input
Write code to create a Shiny UI object called ui using fluidPage() that contains a numeric input with inputId num, label Enter a number:, and default value 1.
R Programming
Hint
Use numericInput() inside fluidPage() to create the input.
2
Add a text output to the UI
Add a textOutput with outputId result inside the existing fluidPage() UI object called ui.
R Programming
Hint
Use textOutput() to show text output in the UI.
3
Create the server function to calculate square
Write a server function called server with arguments input and output. Inside it, assign output$result to renderText() that returns the square of input$num.
R Programming
Hint
Use renderText() to create reactive text output that depends on input$num.
4
Run the Shiny app
Write code to run the Shiny app by calling shinyApp() with the ui and server objects.
R Programming
Hint
Use shinyApp() to launch the app with your UI and server.
Practice
(1/5)
1. In a Shiny app, what is the main role of the ui part?
easy
A. To perform calculations and data processing
B. To define what the user sees and interacts with
C. To store data permanently
D. To connect to external databases
Solution
Step 1: Understand the purpose of ui in Shiny
The ui defines the layout and elements the user interacts with, like buttons and plots.
Step 2: Differentiate from server role
The server handles logic and calculations, not the ui.
Final Answer:
To define what the user sees and interacts with -> Option B
Quick Check:
ui = user interface [OK]
Hint: Remember UI means User Interface, what users see [OK]
Common Mistakes:
Confusing ui with server
Thinking ui does data processing
Assuming ui stores data
2. Which of the following is the correct way to create a numeric input in Shiny's UI?
easy
A. numericInput(inputId = "num", label = "Number", value = 0)
B. numericInput("Number", inputId = "num", value = 0)
C. numericInput(0, "Number", 0)
D. numericInput(label = "Number", value = 0)
Solution
Step 1: Recall numericInput syntax
The correct order is numericInput(inputId, label, value).
Step 2: Check each option
numericInput(inputId = "num", label = "Number", value = 0) matches the correct syntax exactly; others have wrong argument order or missing arguments.
Final Answer:
numericInput(inputId = "num", label = "Number", value = 0) -> Option A
Quick Check:
Correct argument order = numericInput(inputId = "num", label = "Number", value = 0) [OK]
Hint: Remember inputId first, then label, then value [OK]
Common Mistakes:
Mixing argument order
Omitting inputId
Using unnamed arguments incorrectly
3. What will be the output shown in the Shiny app if the server code is:
The code uses data inside plot() but data is not defined anywhere.
Step 2: Understand consequences of missing data
This will cause an error because R cannot find the object data.
Final Answer:
Missing definition of 'data' causes an error -> Option A
Quick Check:
Undefined variable = error [OK]
Hint: Always define variables before using in render functions [OK]
Common Mistakes:
Assuming plot() is invalid in renderPlot
Confusing output variable names
Thinking renderPlotly is required
5. You want to create a Shiny app that shows a histogram of a numeric variable chosen by the user from a dropdown menu. Which approach correctly connects the input and output?
hard
A. Use sliderInput to select variable, then plot histogram of entire data
B. Use numericInput for variable choice, then plot fixed variable in server
C. Use selectInput in UI for variable choice, then in server use renderPlot to plot histogram of data[[input$var]]
D. Use textInput for variable name, then plot histogram of input$var directly
Solution
Step 1: Choose correct input control for variable selection
selectInput lets user pick a variable name from choices.
Step 2: Use input to select data column in server
Access the chosen variable as data[[input$var]] and plot histogram with renderPlot.
Final Answer:
Use selectInput in UI for variable choice, then in server use renderPlot to plot histogram of data[[input$var]] -> Option C
Quick Check:
Dropdown input + dynamic plot = Use selectInput in UI for variable choice, then in server use renderPlot to plot histogram of data[[input$var]] [OK]
Hint: Use selectInput for choices, access with data[[input$var]] [OK]
Common Mistakes:
Using numericInput instead of selectInput
Trying to plot input$var directly without data
Using sliderInput for variable selection
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.