R语言lmer模型系数输出缺失首列 如何转换为tibble保留所有列
问题原因
输出缺失第一列(效应名称列)是因为原代码最后一步调用了pull(x),该操作会提取tidy结果中的单列数值,直接丢弃效应名称和其余列信息,最终列表仅保留数值向量,因此看不到第一列内容。
修复方案
直接去掉最后多余的map+pull步骤即可,你可以选择两种常用写法实现输出为tibble格式,完整保留所有列信息:
写法1:直接转换系数矩阵
models_list_1 <- dataset_long %>% group_by(FEATURE) %>% do( fit = lmerTest::lmer( RESPONSE ~ TREATMENT * SESSION + (1 | SUBJECT), data = . ) ) %>% pull(fit) %>% lapply( function(x) summary(x) %>% coefficients() %>% as.data.frame() %>% # 将行名(效应名称)转为第一列 tibble::rownames_to_column("effect_name") %>% tibble::as_tibble() )
写法2:使用broom::tidy直接输出标准格式
models_list_1 <- dataset_long %>% group_by(FEATURE) %>% do( fit = lmerTest::lmer( RESPONSE ~ TREATMENT * SESSION + (1 | SUBJECT), data = . ) ) %>% pull(fit) %>% purrr::map(broom::tidy, effects = "fixed")
修改后models_list_1的每个元素都是包含6列的tibble,第一列为效应名称,后续依次为估计值、标准误、自由度、t值、p值,和预期结构完全一致。
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

