我正在尝试使用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)
以前有人遇到过吗?
答案 0 :(得分:1)
问题似乎与在协变量名称中使用下划线有关。从他们中取出这些,它应该起作用。
答案 1 :(得分:0)
正如其他人所指出的那样,问题在covariate.labels参数中出现了特殊字符。但是,推荐的解决方案缺少一些东西:
使用乳胶输出,您可以使用\\
来“转义”特殊字符,以便它们正确显示。您也可以使用命令xtable::sanitize("Sexual_Disgust_std", type = "latex")
将字符串转换为对乳胶更友好的内容。在原始示例中,将为:
covariate.labels = c("Gender", "Sexual\\_Disgust\\_std")
使用乳胶输出时,某些特殊字符是数学字符,因此需要将其包含在数学模式语法中。例如,如果两个协变量是%黑色和(%Black)平方,则一个可能写为:
covariate.labels = c("\\% Black", "(\\% Black)$^2$")
原始问题似乎是写入.htm
文件中的,但未在注视机type = 'html'
中指定,因此默认值为type = 'latex'
。如果在乳胶和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输出。例如,下面是一个小的函数,它将搜索并替换各种特殊字符的文本字符串。 library(stringr)
remove_special_chars <- function(covar_labels){
covar_labels %>%
str_replace_all("\\\\", "") %>%
str_replace_all("\\^", "") %>%
str_replace_all("_", " ") %>%
str_replace_all("\\$", "") %>%
str_replace_all("`", "'")
}