stargazer将data.frame数据解释为乳胶代码是否构成错误或是这个意图?

时间:2015-04-15 21:23:44

标签: r stargazer

我遇到的问题是Stargazer函数将data.frame中的数据解释为latex命令。我想找到一种方法来抑制观星者的这个特征。见下文。

z <- c("Bank of America Corp",
    "Citigroup Inc",
    "JPMorgan Chase & Co",
      "Morgan Stanley",
     "Wells Fargo & Co")

 s <- data.frame(z=z, l= c(100000, 25, 10000, 24, 100000))
 library(stargazer)
 stargazer(s, type = "text", summary = FALSE)
 # prints out
     ==============================
               z              l   
     ------------------------------
      1 Bank of America Corp 100,000
      2    Citigroup Inc       25   
      3    JPMorgan Chase      Co   
      4    Morgan Stanley      24   
      5     Wells Fargo        Co   
     ------------------------------

这里的&符号由于其在乳胶中的含义而导致新的列被假定。我确认了这一点,因为更换了&amp;使用并使表格正确打印出来。

  z <- c("Bank of America Corp",
    "Citigroup Inc",
    "JPMorgan Chase and Co",
      "Morgan Stanley",
     "Wells Fargo and Co")

 s <- data.frame(z=z, l= c(100000, 25, 10000, 24, 100000))
 library(stargazer)
 stargazer(s, type = "text", summary = FALSE)
 # prints out

 ===============================
             z              l   
 -------------------------------
 1 Bank of America Corp  100,000
 2     Citigroup Inc       25   
 3 JPMorgan Chase and Co 10,000 
 4    Morgan Stanley       24   
 5  Wells Fargo and Co   100,000
 -------------------------------

我可以在stargazer函数中调用任何选项来阻止此行为吗?

1 个答案:

答案 0 :(得分:4)

目前版本的stargazer似乎没有这个选项。如果检查源代码,您将找到以下代码块(第4704行):

############## TEXT AND html MODE ##############


  .split.line <-    # split line of a LaTeX table into constituent parts separated by &
  function(s) {
    # remove the "\\\\"
    s <- gsub("\\\\", "", s, fixed=TRUE)
    s <- paste("  ",s,"  ", sep="")

    return(.trim(strsplit(s, " &", fixed=TRUE)[[1]]))
  }

所以,显然,这似乎被硬编码为stargazer格式化表输出的方式,并且不会被命令的任何选项捕获。

如果您只是想格式化一个类似于您在示例中发布的数据框的数据框,我会使用print.xtable()包中的xtable,它具有正确处理字符串中的&符号的清理函数为建议的示例数据框生成正确的LaTeX和HTML outupt。