I am looking to make a summary table for a set of linear models. The models are either lmer(), glmer(), or gamlss(). I am trying to print the results of 6 of these models into a single table. However, when I try to do this with sjPlot::tab_model, I receive the following error message, "Error: $ operator is invalid for atomic vectors".
I removed the two gamlss() models to see if the table would print and it did. It seems to me that the issue is that sjPlot::tab_model cannot work with gamlss() models.
recruitment_data <- structure(list(Site_long = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Hanauma Bay",
"Waikiki"), class = "factor"), Shelter = structure(c(1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("High",
"Low"), class = "factor"), `Module #` = structure(c(7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L), .Label = c("111", "112", "113", "114", "115",
"116", "211", "212", "213", "214", "215", "216"), class = "factor"),
TimeStep = c(4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L,
5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L,
5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L,
4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L,
4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L,
7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L,
7L, 7L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L), Side = structure(c(1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L,
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L,
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L,
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L,
2L, 1L, 2L, 1L, 2L), .Label = c("N", "S"), class = "factor"),
recruits = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 1,
0, 0, 3, 0, 0, 1, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2,
3, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 2, 2, 0, 1, 1, 0, 1, 3, 1, 0, 1, 1, 0, 1, 5, 2, 0, 1,
1, 2, 0, 3, 1, 2, 2, 3, 6, 5, 2, 0, 1, 2, 0, 4, 1, 4, 1,
0, 0, 4, 0, 1)), row.names = c(NA, -96L), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), vars = c("Site_long", "Shelter",
"Module #", "TimeStep"), drop = TRUE)
survival_data <- structure(list(Date = structure(c(17288, 17288, 17288, 17288,
17288, 17288, 17292, 17299, 17299, 17304, 17306, 17386, 17386,
17386, 17386, 17386, 17386, 17387, 17387, 17387, 17389, 17389,
17389, 17390, 17398, 17404, 17475, 17475, 17477, 17480, 17482,
17484, 17484, 17484, 17484, 17484, 17484, 17489, 17575, 17575,
17575, 17575, 17575, 17582, 17586, 17594, 17600, 17601, 17603,
17603), class = "Date"), Year = structure(c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("17",
"18"), class = "factor"), Site = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("HAN",
"WAI"), class = "factor"), Treatment = c("CLO", "CLO", "CLO",
"OPE", "OPE", "OPE", "CLO", "CLO", "OPE", "OPE", "CLO", "CLO",
"CLO", "CLO", "OPE", "OPE", "OPE", "CLO", "OPE", "OPE", "CLO",
"CLO", "OPE", "OPE", "CLO", "CLO", "CLO", "OPE", "CLO", "OPE",
"CLO", "CLO", "CLO", "CLO", "OPE", "OPE", "OPE", "OPE", "CLO",
"CLO", "CLO", "OPE", "OPE", "OPE", "CLO", "OPE", "OPE", "CLO",
"CLO", "OPE"), `Module #` = c(212L, 214L, 216L, 211L, 213L, 215L,
116L, 114L, 115L, 113L, 112L, 212L, 214L, 216L, 211L, 213L, 215L,
116L, 111L, 115L, 112L, 114L, 115L, 113L, 114L, 114L, 112L, 115L,
116L, 113L, 114L, 212L, 214L, 216L, 211L, 213L, 215L, 111L, 212L,
214L, 216L, 213L, 215L, 211L, 116L, 115L, 113L, 114L, 112L, 111L
), n.x = c(1L, 1L, 2L, 2L, 3L, 3L, 6L, 7L, 5L, 4L, 2L, 2L, 2L,
1L, 2L, 3L, 5L, 10L, 1L, 4L, 10L, 13L, 6L, 5L, 2L, 2L, 8L, 6L,
10L, 8L, 12L, 2L, 6L, 2L, 2L, 3L, 5L, 2L, 2L, 5L, 1L, 8L, 9L,
2L, 10L, 15L, 10L, 16L, 12L, 4L), n.y = c(1, 1, 0, 2, 3, 3, 6,
7, 4, 4, 2, 2, 2, 1, 2, 3, 5, 9, 1, 3, 10, 11, 5, 5, 1, 1, 7,
6, 7, 8, 11, 2, 5, 2, 2, 3, 5, 2, 2, 5, 1, 7, 7, 0, 8, 14, 9,
9, 9, 4), `%_Survival` = c(100, 100, 0, 100, 100, 100, 100, 100,
80, 100, 100, 100, 100, 100, 100, 100, 100, 90, 100, 75, 100,
84.6153846153846, 83.3333333333333, 100, 50, 50, 87.5, 100, 70,
100, 91.6666666666667, 100, 83.3333333333333, 100, 100, 100,
100, 100, 100, 100, 100, 87.5, 77.7777777777778, 0, 80, 93.3333333333333,
90, 56.25, 75, 100), Quarter = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4), Mortality = c(0,
0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2,
1, 0, 1, 1, 1, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
2, 2, 1, 1, 7, 3, 0), Survival = c(100, 100, 0, 100, 100, 100,
100, 100, 80, 100, 100, 100, 100, 100, 100, 100, 100, 90, 100,
75, 100, 84.6153846153846, 83.3333333333333, 100, 50, 50, 87.5,
100, 70, 100, 91.6666666666667, 100, 83.3333333333333, 100, 100,
100, 100, 100, 100, 100, 100, 87.5, 77.7777777777778, 0, 80,
93.3333333333333, 90, 56.25, 75, 100), Module = c(212L, 214L,
216L, 211L, 213L, 215L, 116L, 114L, 115L, 113L, 112L, 212L, 214L,
216L, 211L, 213L, 215L, 116L, 111L, 115L, 112L, 114L, 115L, 113L,
114L, 114L, 112L, 115L, 116L, 113L, 114L, 212L, 214L, 216L, 211L,
213L, 215L, 111L, 212L, 214L, 216L, 213L, 215L, 211L, 116L, 115L,
113L, 114L, 112L, 111L), Survival_prop = c(1, 1, 0, 1, 1, 1,
1, 1, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 0.9, 1, 0.75, 1, 0.846153846153846,
0.833333333333333, 1, 0.5, 0.5, 0.875, 1, 0.7, 1, 0.916666666666667,
1, 0.833333333333333, 1, 1, 1, 1, 1, 1, 1, 1, 0.875, 0.777777777777778,
0, 0.8, 0.933333333333333, 0.9, 0.5625, 0.75, 1), Date_new = structure(c(17378,
17378, 17378, 17378, 17378, 17378, 17382, 17389, 17389, 17394,
17396, 17476, 17476, 17476, 17476, 17476, 17476, 17477, 17477,
17477, 17479, 17479, 17479, 17480, 17488, 17494, 17565, 17565,
17567, 17570, 17572, 17574, 17574, 17574, 17574, 17574, 17574,
17579, 17665, 17665, 17665, 17665, 17665, 17672, 17676, 17684,
17690, 17691, 17693, 17693), class = "Date"), Site_long = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L), .Label = c("Hanauma Bay", "Waikiki"), class = "factor"),
Treatment_long = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 1L,
1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L,
2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L), .Label = c("Closed",
"Open"), class = "factor"), Shelter = c("Low", "Low", "Low",
"High", "High", "High", "Low", "Low", "High", "High", "Low",
"Low", "Low", "Low", "High", "High", "High", "Low", "High",
"High", "Low", "Low", "High", "High", "Low", "Low", "Low",
"High", "Low", "High", "Low", "Low", "Low", "Low", "High",
"High", "High", "High", "Low", "Low", "Low", "High", "High",
"High", "Low", "High", "High", "Low", "Low", "High")), row.names = c(NA,
-50L), vars = c("Date", "Year", "Site", "Treatment", "Module #"
), labels = structure(list(Date = structure(c(17288, 17288, 17288,
17288, 17288, 17288, 17292, 17299, 17299, 17304, 17306, 17386,
17386, 17386, 17386, 17386, 17386, 17387, 17387, 17387, 17389,
17389, 17389, 17390, 17398, 17404, 17475, 17475, 17477, 17480,
17482, 17484, 17484, 17484, 17484, 17484, 17484, 17489, 17575,
17575, 17575, 17575, 17575, 17582, 17586, 17594, 17600, 17601,
17603, 17603), class = "Date"), Year = c(17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18), Site = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L), .Label = c("HAN", "WAI"), class = "factor"), Treatment = c("CLO",
"CLO", "CLO", "OPE", "OPE", "OPE", "CLO", "CLO", "OPE", "OPE",
"CLO", "CLO", "CLO", "CLO", "OPE", "OPE", "OPE", "CLO", "OPE",
"OPE", "CLO", "CLO", "OPE", "OPE", "CLO", "CLO", "CLO", "OPE",
"CLO", "OPE", "CLO", "CLO", "CLO", "CLO", "OPE", "OPE", "OPE",
"OPE", "CLO", "CLO", "CLO", "OPE", "OPE", "OPE", "CLO", "OPE",
"OPE", "CLO", "CLO", "OPE"), `Module #` = c(212L, 214L, 216L,
211L, 213L, 215L, 116L, 114L, 115L, 113L, 112L, 212L, 214L, 216L,
211L, 213L, 215L, 116L, 111L, 115L, 112L, 114L, 115L, 113L, 114L,
114L, 112L, 115L, 116L, 113L, 114L, 212L, 214L, 216L, 211L, 213L,
215L, 111L, 212L, 214L, 216L, 213L, 215L, 211L, 116L, 115L, 113L,
114L, 112L, 111L)), row.names = c(NA, -50L), class = "data.frame", vars = c("Date",
"Year", "Site", "Treatment", "Module #"), drop = TRUE), indices = list(
0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L,
38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L), drop = TRUE, group_sizes = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), biggest_group_size = 1L, class = c("grouped_df", "tbl_df",
"tbl", "data.frame"))
library(lme4)
library(gamlss)
recruitment_glmer_n3 <- glmer(recruits ~ Site_long*Shelter + (1|module_recruit), data = n3, family = poisson, na.action = "na.fail")
summary(recruitment_glmer_n3)
survival_gamlss <- gamlss(Survival_prop ~ Site_long*Treatment_long + (1|module_survival), data = survival_results_long_2, family = BEINF())
summary(survival_gamlss)
library(sjPlot)
tab_model(recruitment_glmer_n3, survival_gamlss)
Is there a way to use sjPlot::tab_model to get html table outputs with gamlss model objects or is there another package that you would recommend for making publication-quality tables for linear model objects of gamlss as well as lmer and glmer? Thank you!
I have added (better) support for gamlss-models, so now you should be able to plot both models in one table with tab_model()
(at least it worked for me). However, you need to update sjPlot and insight from GitHub first.
Then, it should work.