我正在尝试使用Stargazer在Rstudio中打印一张组合lm的表格,但我一直收到此消息:
if(nchar(text.matrix [r,c])> max.length [real.c])中的错误{在需要TRUE / FALSE的地方缺少值
这是我正在使用的代码:
stargazer(lm_1, lm_2, lm_3, lm_4,
dep.var.labels = c("PolOri_Social_std", "Sexual_Disgust_std"),
covariate.labels = c("Gender", "Sexual_Disgust_std"),
style = "demography",
out = "hierarchical.htm",
header = F)
以前有没有人遇到过?
问题似乎与在协变量名称中使用下划线有关。从他们中取出这些,它应该起作用。
正如其他人所指出的那样,问题在covariate.labels参数中出现了特殊字符。但是,推荐的解决方案缺少一些东西:
有了乳胶输出,您可以使用\来转义特殊字符,以便它们正确显示。在原始示例中,将是:
covariate.labels = c("Gender", "Sexual\\_Disgust\\_std")
对于乳胶输出,某些特殊字符是数学字符,需要将它们用数学模式语法括起来。例如,如果两个协变量是%黑色和(%Black)平方,则一个可能写为:
covariate.labels = c("\\% Black", "(\\% Black)$^2$")
如果在乳胶和html输出之间切换,某些乳胶编码会破坏html的生成。我尚不清楚解决此问题的理想方法,但是如果您将knitr
与R Markdown或Sweave结合使用,则可以使用以下函数:knitr:: is_latex_output()
或knitr::is_html_output()
生成乳胶或html适当的代码,如下所示:
library(knitr)
library(dplyr)
library(stargazer)
star_format <- dplyr::case_when(
knitr::is_latex_output() ~ "latex",
knitr::is_html_output() ~ "html",
TRUE ~ "text" # for interactive coding in console
)
# One way would be to build latex / html specific labels
covar_labels <- dplyr::case_when(
knitr::is_latex_output() ~ c("Gender", "Sexual\\_Disgust\\_std"),
knitr::is_html_output() ~ c("Gender", "Sexual Disgust std"),
TRUE ~ c("Gender", "Sexual Disgust std")
)
# for simplicity, stargazer call doesn't include custom dep.var.labels or out
stargazer(lm_1, lm_2, lm_3, lm_4,
type = star_format,
covariate.labels = covar_labels)
}
# A second way would be to create separate stargazer calls:
if(knitr::is_html_output()) {
stargazer(lm_1, lm_2, lm_3, lm_4,
type = star_format,
dep.var.labels = c("PolOri Social std", "Sexual Disgust std"),
covariate.labels = c("Gender", "Sexual Disgust std"),
style = "demography",
out = "hierarchical.html",
header = FALSE)
}
if(knitr::is_latex_output()) {
stargazer(lm_1, lm_2, lm_3, lm_4,
type = star_format,
dep.var.labels = c("PolOri\\_Social\\_std", "Sexual\\_Disgust\\_std"),
covariate.labels = c("Gender", "Sexual\\_Disgust\\_std"),
style = "demography",
out = "hierarchical.tex",
header = FALSE)
}
knitr::is_latex_output()
和knitr::is_html_output ()
函数,也可以使用正则表达式预处理任何标签,这些标签要针对html或Latex输出进行专门格式化。