如何调整texreg包plotreg所用gl函数使变量标签支持上标下标
解决texreg包plotreg函数系数标签上下标显示问题
你直接给gl()的labels参数传expression()失败的核心原因是:R的因子水平只能存储字符类型的值,无法直接保留表达式格式用于绘图渲染,正确的做法是在调用plotreg()时通过其内置的自定义系数名参数传入plotmath表达式。
以下是可直接运行的修改后示例:
library(texreg) ctl <- c(4.17, 5.58, 5.18, 6.11, 4.50, 4.61, 5.17, 4.53, 5.33, 5.14) trt <- c(4.81, 4.17, 4.41, 3.59, 5.87, 3.83, 6.03, 4.89, 4.32, 4.69) # gl的labels保持普通字符即可,无需修改 group <- gl(2, 10, 20, labels = c("Ctl", "Trt")) weight <- c(ctl, trt) lm.D9 <- lm(weight ~ group) lm.D90 <- lm(weight ~ group - 1) # 示例1:绘制带截距的模型,Trt标签显示下标2 plotreg(lm.D9, custom.coef.names = c( "截距", # 对应第一个系数:截距项 expression(Trt[2]) # 对应第二个系数:groupTrt,渲染为Trt下标2 )) # 示例2:绘制无截距的模型,Ctl显示上标2、Trt显示下标2 plotreg(lm.D90, custom.coef.names = c( expression(Ctl^2), # 对应第一个系数:groupCtl,渲染为Ctl上标2 expression(Trt[2]) # 对应第二个系数:groupTrt,渲染为Trt下标2 ))
使用注意事项
- 传入
custom.coef.names的向量长度要和模型的系数数量完全一致,顺序也要和模型summary输出的系数顺序对应,否则会出现标签错位 - 上下标写法遵循R的plotmath语法规则:上标用
^,下标用[],复杂格式可以用bquote()、parse()等函数批量生成 - 如果需要同时传入多个模型的自定义标签,可以给
custom.coef.names传入和模型数量对应的列表,每个子列表对应一个模型的标签
内容的提问来源于stack exchange,提问作者Chris T.
相关产品推荐
相关产品推荐

