web-dev-qa-db-ja.com

R MarkdownでStargazerによって生成されたテーブルのサイズを変更するにはどうすればよいですか?

コードチャンクにresize.height=0.5,resize.width=0.5を含めましたが、stargazerによって生成されたテーブルのサイズを変更できません。誰か教えてもらえますか?

私のコードチャンクオプションは次のようになります:echo=FALSE,warning=FALSE,results='asis',resize.height=0.5,resize.width=0.5}

スターゲイザーコードは次のようなものです。

stargazer(did.student,student.control.kmt,student.control.neu,student.control.dpp,header = FALSE,
          title="DD Model",
          covariate.labels = c("Treatment","group","Treatment*group"),
          dep.var.labels = "attitude",
          column.labels   = c("","party1","Independent","party2"),
          label = "DiD-students")

助けていただければ幸いです!

-言及するのを忘れました-私はテーブルでビーマーを使用しています。

7
yuan-ning

私は自分で問題を解決します。

Stargazerでテーブルサイズを調整するには、フォントサイズを_font.size=_に変更し、Stargazerを単一行に_single.row = TRUE_にし、stargazer()の列間のスペースを_column.sep.width = "1pt"_に変更します。

ここのリンクprint(stargazer(),scalebox='0.7')の使用を提案していますが、おそらくBeamerでMarkdownを使用しているため、機能しませんが、よくわかりません。これについてもっと貢献したいと思います。

もっと簡単な答えを期待していましたが、これでうまくいきます!

6
yuan-ning

GitHubに関するこのコメント _\resizebox{}_をstargazer()に実装するように促しました。 resizebox.stargazer()を使用して、stargazer()から出力されるテーブルのサイズを_tab.width_および/または_tab.height_引数で指定できます。この機能を有効にするには、最初に次のコードを実行する必要があります。

_resizebox.stargazer = function(..., tab.width = "!", tab.height = "!"
                               ){
  #Activate str_which() function:
  require(stringr) 

  #Extract the code returned from stargazer()
  res = capture.output(
    stargazer::stargazer(...)
    )

  #Render the arguments:
  tab.width = tab.width
  tab.height = tab.height

  #Attach "}" between \end{tabular} and \end{table}
  res = 
    prepend(res, "}", before = length(res))

  #Input \resizebox before \begin{tabular}
  res = 
    c(res[1:str_which(res, "^\\\\begin\\{tabular\\}.*")-1],
      paste0("\\resizebox{",tab.width,"}{",tab.height,"}{%"),
      res[str_which(res, "^\\\\begin\\{tabular\\}.*"):length(res)]
      )

  #Produce the whole strings
  cat(res, sep = "\n")
}
_

テーブルサイズは、たとえば次のように指定できます。 resizebox.stargazer(..., tab.width = "0.7\\textwidth")。 TeXコマンドは_\\_ではなく_\_から作成する必要があることに注意してください。

1

これは、出力をLaTeXファイルに書き込むCarlosのソリューションの代替手段です。

mkTexTable <- function(..., file){

    tbl <- capture.output({
        stargazer(...)
    })    

    tbl <- gsub("\\begin{tabular}", "\\resizebox{\\textwidth}{!}{\\begin{tabular}", tbl, fixed = T)
    tbl <- gsub("\\end{tabular}", "\\end{tabular}}", tbl, fixed = T)

    fileConn <- file(file)
    writeLines(tbl, fileConn)
    close(fileConn)
}

mkTexTable(lm1, lm2, "texOutput.tex")

この投稿はまたいくつかの助けを提供しました: https://stackoverflow.com/a/36018251/2289444

1
Antti