私はあなたがrpivotTable
あなたは後にしているかなりのものではありませんでしたが、私は重い物を持ち上げるのいくつかを行うように構成することができると思い、
ここで操作のためのrpivotTable
、DT
を使用して(例だと言った知っていますdata.frameを表示するには、rvest
はDOMからのinnerHTMLプロパティを解析するために、)は、クライアント側からテーブルオブジェクトを渡すために優れたデータフォーマットであるが、これはコンセプトの証明である可能性があります
ui.R
library(shiny)
library(DT)
library(rpivotTable)
FullPage <- fluidPage(
DT::dataTableOutput('aSummaryTable'),
rpivotTableOutput('RESULTS')
)
FullPage
server.R:
library(shiny)
library(rpivotTable)
library(DT)
library(rvest)
function(input, output, session) {
# Make some sample data
qbdata <- reactive({
expand.grid(LETTERS,1:3)
})
# Clean the html and store as reactive
summarydf <- eventReactive(input$myData,{
input$myData %>%
read_html %>%
html_table(fill = TRUE) %>%
# Turns out there are two tables in an rpivotTable, we want the second
.[[2]]
})
# show df as DT::datatable
output$aSummaryTable <- DT::renderDataTable({
datatable(summarydf(), rownames = FALSE)
})
# Whenever the config is refreshed, call back with the content of the table
output$RESULTS <- renderRpivotTable({
rpivotTable(
qbdata(),
onRefresh =
htmlwidgets::JS("function(config) {
Shiny.onInputChange('myData', document.getElementById('RESULTS').innerHTML);
}")
)
})
}
rpivotTableはあなたの望むものに非常に近いです。輸出を除きます。彼らがエクスポートしたい場合は、おそらくコールバックを掘り、テーブルの現在の状態を取得する必要があります。 – Shape
私は自分の質問を編集しました。私は実際には、ソリューションの一部であるためにグラフィックスとエクスポート機能を必要としません。私は特定の要件ごとに自分自身を簡単に実装することができます。これに関して、rpivotTableは、グラフィックをやろうとするので必要なものではありませんが、あまりエレガントではありません。カスタマイズオプションは表示されません。また、集計されたデータフレームは返されないため、結果を処理することはできません(データのエクスポートや独自のグラフィックの作成など)。 – Sasha
実際にはかなりの数のカスタマイズオプションがありますが、ドキュメントのためにpivottable.jsをチェックアウトする必要があります(DTのようなRの他のJSライブラリポートと同様、ドキュメントはほとんどがJSライブラリのために残ります)。更新、htmlウィジェットは単なるラッパーです)。あなたの出力を光沢のあるオブジェクトとして返す方法も見つけました。あなたはrpivotTableでonRefreshパラメータを使用して、DOM経由でアクセスするだけです。 – Shape