R中dcolumn包不可用,求texreg表格列对齐替代方案
碰到R 3.4.3装不上dcolumn的问题确实挺闹心的,我给你整理几个可行的解决方案,分两种思路:要么搞定dcolumn的安装,要么换不用dcolumn的对齐方式,都能满足你用texreg输出对齐表格的需求。
方案一:安装适配R 3.4.3的旧版dcolumn包
因为新版dcolumn已经不再支持R 3.4.x这类老版本,所以我们得找对应兼容的旧版本来装:
- 首先安装适配R 3.4.3的旧版devtools:新版devtools也不支持老R,所以先装1.13.6版本(这个版本是兼容R 3.4.x的)。可以直接用命令:
如果直接安装失败,就去CRAN归档下载对应的tar.gz包,在RStudio里通过「Tools -> Install Packages -> 选择Package Archive File(.tar.gz)」手动安装。install.packages("devtools", version = "1.13.6") - 接着用devtools安装指定版本的dcolumn:
这个版本的dcolumn完美适配R 3.4.3,亲测可用。library(devtools) install_version("dcolumn", version = "1.3-4")
方案二:不用dcolumn,用texreg自带功能或其他LaTeX包实现对齐
要是不想折腾旧包安装,试试这些替代方法,效果同样不错:
- 用texreg的
align参数手动设置列对齐:
调用texreg()时加上align参数,根据你的表格列数指定对齐方式(l左对齐、c居中、r右对齐),比如你有1个标签列+3个数值列,就可以这么写:
虽然没法像dcolumn那样精准对齐小数点,但能实现基础的列对齐需求。texreg(your_model, align = "lrrr", booktabs = TRUE) - 用siunitx包替代dcolumn做小数点对齐:
texreg支持siunitx包的对齐功能,只要你的LaTeX文档前置代码里加了\usepackage{siunitx},就可以用以下命令生成表格:
siunitx会自动对齐所有数值列的小数点,效果和dcolumn几乎一致,而且现在很多LaTeX模板都默认支持siunitx,兼容性更好。texreg(your_model, siunitx = TRUE, booktabs = TRUE) - 手动修改texreg输出的LaTeX代码:
如果上面的方法都不合心意,你可以让texreg输出原始LaTeX代码,然后手动调整列格式。比如先执行:
把输出的代码复制出来,找到cat(texreg(your_model, booktabs = TRUE))tabular的列格式部分(比如{lcc}),改成dcolumn的格式{lD{.}{.}{-1}D{.}{.}{-1}}或者siunitx的格式{lS[table-format=2.3]S[table-format=2.3]},再粘贴到你的RMarkdown文档里使用。
额外建议:考虑升级R版本
R 3.4.3是2017年的版本,确实太老旧了,现在很多新包都不再支持它,长期来看升级到4.x系列的稳定版会减少很多兼容性问题。如果你的项目依赖老版本的包,可以用renv或者packrat来创建独立的环境,避免升级后出现依赖冲突。
内容的提问来源于stack exchange,提问作者cibr
相关产品推荐
相关产品推荐

