RでWeb上にインターアクティブなコンテンツを作成

統計ソフトRにShinyというパッケージをインストールして、インターアクティブなコンテンツを作成しました。

コンテンツの画像

 

それをShinyapps.ioに公開しました。現在無料のコースですので、最大5件、月に24時間までしか機能しません。もちろん、有料コースもあります。コースの詳細は上記リンクのページにあります。

下記のリンクに後継しています。学年を選ぶと右の数値が変わります。ちなみに、meanが平均です。

架空の試験の学年別データ

プログラムについて

Rでui.rとserver.rというプログラムを書いて、それを上記サイトにアップします。

上にリンクしたコンテンツは、サンプル・プログラムのデータ部分を書き直したものです。参考にui.rとserver.rのスクリプトを示します。赤字部分が私が書き直した部分です。#部分は説明ですので、プログラムは、非常に短いですね。

ui.r

library(shiny)

# Define UI for dataset viewer application
shinyUI(pageWithSidebar(

# Application title
headerPanel(“Reactivity”),

# Sidebar with controls to provide a caption, select a dataset, and
# specify the number of observations to view. Note that changes made
# to the caption in the textInput control are updated in the output
# area immediately as you type
sidebarPanel(
textInput(“caption”, “Caption:”, “Data Summary”),

selectInput(“dataset”, “Choose a dataset:”,
choices = c(“1year”, “2year”, “3year”, “all”)),

numericInput(“obs”, “Number of observations to view:”, 10)
),

# Show the caption, a summary of the dataset and an HTML table with
# the requested number of observations
mainPanel(
h3(textOutput(“caption”)),

verbatimTextOutput(“summary”),

tableOutput(“view”)
)
))

server.r

library(shiny)
library(dplyr)
data0 <- read.csv(“http://pastebin.com/raw/ikf16vAQ”)
# Define server logic required to summarize and view the selected dataset

shinyServer(function(input, output) {

# By declaring datasetInput as a reactive expression we ensure that:
#
# 1) It is only called when the inputs it depends on changes
# 2) The computation and result are shared by all the callers (it
# only executes a single time)
#
datasetInput switch(input$dataset,
“1year” = select(filter(data0,year==1),marks),
“2year” = select(filter(data0,year==2),marks),
“3year” = select(filter(data0,year==3),marks),
“all” = select(data0,marks))
})

# The output$caption is computed based on a reactive expression that
# returns input$caption. When the user changes the “caption” field:
#
# 1) This expression is automatically called to recompute the output
# 2) The new caption is pushed back to the browser for re-display
#
# Note that because the data-oriented reactive expressions below don’t
# depend on input$caption, those expressions are NOT called when
# input$caption changes.
output$caption input$caption
})

# The output$summary depends on the datasetInput reactive expression,
# so will be re-executed whenever datasetInput is invalidated
# (i.e. whenever the input$dataset changes)
output$summary dataset summary(dataset)
})

# The output$view depends on both the databaseInput reactive expression
# and input$obs, so will be re-executed whenever input$dataset or
# input$obs is changed.
output$view head(datasetInput(), n = input$obs)
})
})


柴田 啓文

紹介 柴田 啓文

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

コメントを残す

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