r语言 - 在数据框架中放置多个表摘要



我试图将我的mtable摘要放入数据框中,尽管我的表中有许多线性模型,因此我想将所有摘要迭代到单个数据框中。

I have try:

funx <-function(x){
x <- c("lm1","lm2","lm3","lm4","lm5","lm6","lm7","lm8","lm9","lm10","lm11","lm12","lm13","lm14","lm15","lm16")
lapply(x, FUN = function(x){
print(data.frame(mtable1$x$sumsat))
})
}

虽然,我只得到一个空的行和列。

0列0行数据帧

下面是一个可复制的示例,首先复制数据框架的结构,然后复制mtable。

test.1.l1 <- structure(list(layer = c(0.0246770934766904, 0.0242527868989167, 
0.0224233190566232, 0.0216524802418302, 0.022118695762337, 0.0209053824836735, 
0.0211326999515466, 0.0217314614023917, 0.0226449195846084, 0.0264381358128127
), year = 2010:2019, pland_00_water = c(0.720970123537124, 0.869977032914356, 
0.914640602650167, 0.966042210923708, 1.02071658077272, 1.03554026555572, 
1.01012823449914, 0.997999765131228, 0.946598156857687, 0.870939609848317
), pland_01_evergreen_needleleaf = c(0.061219892999948, 0.0656477468961707, 
0.0660327776697553, 0.067187869990509, 0.0704606315659779, 0.0766211239433312, 
0.0835516778678536, 0.0700756007923933, 0.0841292240282305, 0.0793163393584232
), pland_02_evergreen_broadleaf = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 
0)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

mtable1 <- structure(list(lm1 = list(coef = structure(c(-0.490793008088997, 
0.000263497054045449, -0.0184145111348303, 0.239173866869237, 
0.000119537895445845, 0.00377507212169696, -2.05203442379985, 
2.20429724868984, -4.87792300152208, 0.0792919374980608, 0.0633280474505839, 
0.00179788462096643, -1.05634933403522, -1.91651525101582e-05, 
-0.0273411382253068, 0.0747633178572242, 0.000546159260601056, 
-0.0094878840443539), .Dim = c(3L, 6L, 1L), .Dimnames = list(
c("(Intercept)", "year", "pland_00_water"), c("est", "se", 
"stat", "p", "lwr", "upr"), "layer")), sumstat = c(sigma = 0.000958988122332796, 
r.squared = 0.772749182940939, adj.r.squared = 0.707820378066921, 
F = 11.9014847792181, numdf = 2, dendf = 7, p = 0.0055946005895997, 
logLik = 57.0903080739377, deviance = 6.43760753142767e-06, AIC = -106.180616147875, 
BIC = -104.970275775899, N = 10), contrasts = NULL, xlevels = structure(list(), .Names = character(0)), 
call = lm(formula = layer ~ year + pland_00_water, data = test.1.l1)), 
lm2 = list(coef = structure(c(-0.492418815888566, 0.00026011039081343, 
-0.121173008645875, 0.78641303012057, 0.000394904714178763, 
0.149578632642607, -0.626158007342618, 0.658666208516531, 
-0.810095710230201, 0.551074730122653, 0.531170155468231, 
0.444547694792599, -2.35199013868023, -0.00067369087340199, 
-0.474870270912672, 1.3671525069031, 0.00119391165502885, 
0.232524253620922), .Dim = c(3L, 6L, 1L), .Dimnames = list(
c("(Intercept)", "year", "pland_01_evergreen_needleleaf"
), c("est", "se", "stat", "p", "lwr", "upr"), "layer")), 
sumstat = c(sigma = 0.00192326452443529, r.squared = 0.0859771798585094, 
adj.r.squared = -0.175172197324774, F = 0.329226057461235, 
numdf = 2, dendf = 7, p = 0.730045008123445, logLik = 50.1313020239177, 
deviance = 2.5892625016659e-05, AIC = -92.2626040478355, 
BIC = -91.0522636758593, N = 10), contrasts = NULL, xlevels = structure(list(), .Names = character(0)), 
call = lm(formula = layer ~ year + pland_01_evergreen_needleleaf, 
data = test.1.l1)), lm3 = list(coef = structure(c(0.0427917027041292, 
-9.92504603474121e-06, 0.417294790308895, 0.000207145379075176, 
0.102545499483599, -0.0479134320014896, 0.920847543296882, 
0.962959788528226, -0.919491809347338, -0.000487603146770531, 
1.0050752147556, 0.000467753054701049), .Dim = c(2L, 6L, 
1L), .Dimnames = list(c("(Intercept)", "year"), c("est", 
"se", "stat", "p", "lwr", "upr"), "layer")), sumstat = c(sigma = 0.00188149134091993, 
r.squared = 0.000286879797135112, adj.r.squared = -0.124677260228223, 
F = 0.00229569696616083, numdf = 1, dendf = 8, p = 0.96295978852823, 
logLik = 49.6832379261547, deviance = 2.83200773276535e-05, 
AIC = -93.3664758523094, BIC = -92.4587205733273, N = 10), 
contrasts = NULL, xlevels = structure(list(), .Names = character(0)), 
call = lm(formula = layer ~ year + pland_02_evergreen_broadleaf, 
data = test.1.l1))), class = "memisc_mtable", parameter.names = c("(Intercept)", 
"year", "pland_00_water", "pland_01_evergreen_needleleaf", "pland_03_deciduous_needleleaf", 
"pland_04_deciduous_broadleaf", "pland_05_mixed_forest", "pland_07_open_shrubland", 
"pland_08_woody_savanna", "pland_09_savanna", "pland_10_grassland", 
"pland_11_wetland", "pland_12_cropland", "pland_13_urban", "pland_14_mosiac", 
"pland_15_barren"), coef.style = "default", summary.stats = list(
c("R-squared", "F", "p", "N"), c("R-squared", "F", "p", "N"
), c("R-squared", "F", "p", "N")), signif.symbols = c(`***` = 0.001, 
`**` = 0.01, `*` = 0.05), factor.style = "($f): ($l)", show.baselevel = TRUE, baselevel.sep = "/", float.style = "f", digits = 3, stemplates = list(
c(`R-squared` = "($r.squared:f#)", `adj. R-squared` = "($adj.r.squared:f#)", 
sigma = "($sigma:#)", F = "($F:f#)", p = "($p:f#)", `Log-likelihood` = "($logLik:f#)", 
Deviance = "($deviance:f#)", AIC = "($AIC:f#)", BIC = "($BIC:f#)", 
N = "($N:d)"), c(`R-squared` = "($r.squared:f#)", `adj. R-squared` = "($adj.r.squared:f#)", 
sigma = "($sigma:#)", F = "($F:f#)", p = "($p:f#)", `Log-likelihood` = "($logLik:f#)", 
Deviance = "($deviance:f#)", AIC = "($AIC:f#)", BIC = "($BIC:f#)", 
N = "($N:d)"), c(`R-squared` = "($r.squared:f#)", `adj. R-squared` = "($adj.r.squared:f#)", 
sigma = "($sigma:#)", F = "($F:f#)", p = "($p:f#)", `Log-likelihood` = "($logLik:f#)", 
Deviance = "($deviance:f#)", AIC = "($AIC:f#)", BIC = "($BIC:f#)", 
N = "($N:d)")), sdigits = 3, show.eqnames = NA, collapse.controls = FALSE, control.var.indicator = c("Yes", 
"No"))

可以从mtable1中的每个列表中提取'sumstat'的数据。

as.data.frame(sapply(mtable1, `[[`, 'sumstat'))
#                        lm1           lm2           lm3
#sigma          9.589881e-04  1.923265e-03  1.881491e-03
#r.squared      7.727492e-01  8.597718e-02  2.868798e-04
#adj.r.squared  7.078204e-01 -1.751722e-01 -1.246773e-01
#F              1.190148e+01  3.292261e-01  2.295697e-03
#numdf          2.000000e+00  2.000000e+00  1.000000e+00
#dendf          7.000000e+00  7.000000e+00  8.000000e+00
#p              5.594601e-03  7.300450e-01  9.629598e-01
#logLik         5.709031e+01  5.013130e+01  4.968324e+01
#deviance       6.437608e-06  2.589263e-05  2.832008e-05
#AIC           -1.061806e+02 -9.226260e+01 -9.336648e+01
#BIC           -1.049703e+02 -9.105226e+01 -9.245872e+01
#N              1.000000e+01  1.000000e+01  1.000000e+01

如果您正在寻找特定lms的值,您可以这样做:

x <- paste0('lm', 1:16)
as.data.frame(sapply(mtable1[x], `[[`, 'sumstat'))

最新更新