RのShinyとShinyapps.ioでインターアクティブなコンテンツ

1.インターアクティブなWebコンテンツの公開

RのパッケージShinyとShinyapps.ioを利用して、Web上で架空の試験の学年別結果ヒストグラムとサマリーを表示するでインターアクティブなコンテンツを作成しました。

https://shibatau.shinyapps.io/tabpanel-1/

2.プログラムはシンプル

ui.Rとserver.Rという二つのプログラムファイルを作成し、それを同一フォルダに置きます。下記がそのプログラムです。

非常に短いプログラムとなります。また、下記のプログラムは、もともとサンプルとしてあったものを修正したもので、修正箇所を赤で示しています。

きれいに描くにはHTMLの知識がいりますが、Rのスキルだけで、体裁よく作成できます。

ui.R

library(shiny)

# Define UI for random distribution application
shinyUI(pageWithSidebar(

# Application title
headerPanel(“試験結果 for practice”),

# Sidebar with controls to select the random distribution type
# and number of observations to generate. Note the use of the br()
# element to introduce extra vertical spacing
sidebarPanel(
radioButtons(“dist”, “year:”,
list(“Year1” = “year1”,
“Year2” = “year2”,
“Year3” = “year3”,
“YearAll” = “yearall”))
),

# Show a tabset that includes a plot, summary, and table view
# of the generated distribution
mainPanel(
tabsetPanel(
tabPanel(“Plot”, plotOutput(“plot”)),
tabPanel(“Summary”, verbatimTextOutput(“summary”))
)
)
))

server.R

library(shiny)
library(dplyr)

data0 <- read.csv(“https://raw.githubusercontent.com/hirogami/Tabsets201609/master/data0”)

# Define server logic for random distribution application
shinyServer(function(input, output) {
# Reactive expression to generate the requested distribution. This is
# called whenever the inputs change. The renderers defined
# below then all use the value computed from this expression
data <- reactive({
dist <- switch(input$dist,
year1 = filter(data0,year==1),
year2 = filter(data0,year==2),
year3 = filter(data0,year==3),
yearall = data0,
year1)

dist[,”marks”]

})

# Generate a plot of the data. Also uses the inputs to build the
# plot label. Note that the dependencies on both the inputs and
# the ‘data’ reactive expression are both tracked, and all expressions
# are called in the sequence implied by the dependency graph
output$plot <- renderPlot({
dist <- input$dist

hist(data(),
main=paste(dist))
})

# Generate a summary of the data
output$summary <- renderPrint({
summary.n <- summary(data())
summary.n[“n”] <- NROW(data())
summary.n
})
})

参照:https://shiny.rstudio.com/articles/tabsets.html

以上


柴田 啓文

紹介 柴田 啓文

経済学部教員です。このサイトの管理者の一人です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です