2016-01-18 30 views
5

R ShinyアプリケーションでDataTabeの列幅を設定する必要があります。私はドキュメントのData Table Optionsを調べました。また、私はthisthis質問Stackoverflowで見直しました。RのShiny DataTableの列幅を設定すると列が多い場合には機能しません

DataTableに列が多すぎないと、幅の設定が正常に機能します。ただし、絶対幅単位(例:'600px')にもかかわらず、複数の列が表示されている場合は設定が上書きされます。以下のコードスニペットで

output$mytable <- DT::renderDataTable({ 
    num_of_cols <- 3 
    cbind(iris,iris)[,1:num_of_cols]}, 
    options = list(autoWidth = TRUE, 
    columnDefs = list(list(width = '500px', targets = 1)))) 

私は変数num_of_cols = 3を設定した場合、それは正常に動作します。ただし、表示列(num_of_cols)を増やすと、列幅が減少します。表示されている列がたくさんある場合、幅の設定は一見影響を与えません。

私はオプションautoWidth = FALSEを試しましたが、別の結果は得られません。私はまた、drawCallbackオプションのJavaScriptを使って、thisスレッドの答えのセクションで説明したようにしようとしましたが、同じ結果が得られます。

DataTableに希望の列幅設定を表示させるにはどうすればよいですか?

答えて

1

hereが示唆しているように、scrollX=Tを設定し、オプションでautoWidth = TRUEを維持することが有効です。

+0

ありがとうございます。不満を抱いています。 – geotheory

1

うわー。私はこれを信じることができない。テーブルオブジェクトの列幅ははっきりしている必要がありますが、データテーブルの場合は非常に混乱していました。私はこれを研究して乾いた後、最終的にRStudioのツールチップの表示で答えを発見するまでに多くの時間を費やしました。

DT::renderDataTable({ 
     datatable(df) %>% formatStyle(columns = c(1,2), width='200px') 
}) 

EDIT:

これはうまくいくかもしれないが、それは実際には他の方法よりも良く動作しません。私が言うことができるこれを行うための直接的な方法はありません。ここで私が使用しているコードは...私は他のものを使う必要はないと思う。私はそれを列ごとに構築し、継続的に戻ってそれを機能させるために調整しなければなりませんでした。修正すべきもののように見えます。

すべての作業が完了したときに、UIの幅の値を1200pxに設定して、開始して縮尺を変更しました。

#UI 
DT::dataTableOutput(outputId = "tableID", width = '830px') 
#Server 
options = list(autoWidth = TRUE, 
       columnDefs = list(list(targets=c(0), visible=TRUE, width='90'), 
           list(targets=c(1), visible=TRUE, width='145'), 
           list(targets=c(2), visible=TRUE, width='105'), 
           list(targets=c(3), visible=TRUE, width='100'), 
           list(targets=c(4), visible=TRUE, width='100'), 
           list(targets=c(5), visible=TRUE, width='100'), 
           list(targets=c(6), visible=TRUE, width='100'), 
           list(targets=c(7), visible=TRUE, width='90'), 
           list(targets='_all', visible=FALSE) 
関連する問題