2016-09-28 6 views
1

誰も私は新しいデータが到着するとtableGrobオブジェクトを動的に構築しようとしています。ここでは、そのようなテーブルを生成しようとしたが、何らかの理由でcombine()関数が期待どおりに機能していない。次のようにループ内で連続して使用すると、tableGrobオブジェクトでの結合が失敗しますか?

私のコードは次のとおりです。

library(gridExtra) 
library(grid) 
library(ggplot2) 

alphabets <- c(rep("A", 3), rep("B", 3), rep("C",3)) 
numbers <- c(rep(c(1,2,3), 3)) 

df1 <- data.frame(alphabets = alphabets[1:4],numbers=numbers[1:4]) 
df2 <- data.frame(alphabets = alphabets[1:4],numbers=numbers[1:4]) 
df3 <- data.frame(alphabets = alphabets,numbers=numbers) 

tab1 <- tableGrob(df1,theme = ttheme_default(),row=NULL) 
tab2 <- tableGrob(df2,theme = ttheme_default(),row=NULL) 
tab3 <- tableGrob(df3,theme = ttheme_default(),row=NULL) 

g1 <- combine(tab1,tab2,along = 2)# 1st combine operation 
g2 <- combine(g1,tab3,along = 1)#second combine operation 

grid.arrange(g2) 

出力がG1 tableGrobオブジェクトからテーブルが欠落しています。

enter image description here

すべてのアイデア、なぜこれが起こっされるだろうか?

答えて

1

をしたいヘッダを持つ2つのデータフレームの間の列を作ることができます。私はいくつかのバグがあったgtableから盗んだが、まだ完全には機能していない。 ロジックIIRCは、行/列名に基づいて整列させることです。これは、結合されたg1テーブルが、その行名が一意ではないので問題になります。

enter image description here

g1$rownames <- paste0("r", seq_len(nrow(g1))) 

は(言うまでもなく、PRは歓迎されている)、

+0

ありがとう。これは素晴らしいです。^- ^。 combine()/ gridExtraの次のバージョンに追加しますか? - 乾杯 – Lune3414

+0

gridExtraは私にとって非常に低い優先度になっています。特にgtableに属している機能の場合は特にそうです。反対にプルリクエストは私を納得させることができます。 – baptiste

0

このように2つのデータフレームを結合できますか?

alphabets <- c(rep("A", 3), rep("B", 3), rep("C",3)) 
numbers <- c(rep(c(1,2,3), 3)) 

df1 <- data.frame(alphabets = alphabets[1:4],numbers=numbers[1:4]) 
df2 <- data.frame(alphabets = alphabets[1:4],numbers=numbers[1:4]) 
df3 <- data.frame(alphabets = alphabets,numbers=numbers) 

tab1 <- tableGrob(df1,theme = ttheme_default(),row=NULL) 
tab2 <- tableGrob(df2,theme = ttheme_default(),row=NULL) 
tab3 <- tableGrob(df3,theme = ttheme_default(),row=NULL) 

df4 <- rbind(df1,df2) 
tab4 <- tableGrob(df4,theme = ttheme_default(),row=NULL) 

g2 <- combine(tab4,tab3,along = 1)#second combine operation 
grid.arrange(g2) 

あなたはそれをハックして、機能の組み合わせの家族は、主に実験的なもので

+0

おかげでそれらを修正し、それが正常に動作します。それはまわりのハックな作業です。私はそのようなことをすると思った。でも、それでもまだcombine()関数の問題は解決していません。 – Lune3414

関連する問題