如何解决'在if(nchar(text.matrix [r,c])> max.length [real.c])中出现错误,{:在rstudio中使用stargazer缺少值,需要TRUE / FALSE的地方?

问题描述 投票:6回答:2

我正在尝试使用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)

以前有没有人遇到过?

r stargazer
2个回答
4
投票

问题似乎与在协变量名称中使用下划线有关。从他们中取出这些,它应该起作用。


0
投票

正如其他人所指出的那样,问题在covariate.labels参数中出现了特殊字符。但是,推荐的解决方案缺少一些东西:

  1. 有了乳胶输出,您可以使用\来转义特殊字符,以便它们正确显示。在原始示例中,将是:

    covariate.labels = c("Gender", "Sexual\\_Disgust\\_std")

  2. 对于乳胶输出,某些特殊字符是数学字符,需要将它们用数学模式语法括起来。例如,如果两个协变量是%黑色和(%Black)平方,则一个可能写为:

    covariate.labels = c("\\% Black", "(\\% Black)$^2$")

  3. 如果在乳胶和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)
    }
  1. 使用相同的knitr::is_latex_output()knitr::is_html_output ()函数,也可以使用正则表达式预处理任何标签,这些标签要针对html或Latex输出进行专门格式化。
© www.soinside.com 2019 - 2024. All rights reserved.