每个人我都试图在新数据到达时动态构建tableGrob对象,并在我可以使用时生成结果。以下是我尝试生成此类表但由于某种原因combine()
函数未按预期工作的尝试。
我的代码如下:
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对象中的表。
为什么会发生这种情况的任何想法?
答案 0 :(得分:1)
联合函数系列主要是实验性的;我从gtable那里偷了它,它有更多的bug,但它还没有完全发挥作用。 逻辑IIRC是基于行/列名称对齐的。这是组合g1表有问题的地方,因为它的行名称不是唯一的。修复它们,它工作正常,
g1$rownames <- paste0("r", seq_len(nrow(g1)))
(不用说,欢迎PR)
答案 1 :(得分:0)
您可以像这样绑定两个数据框吗?
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)
你可以破解它并在两个数据框之间用你想要的标题排成一行