R 함수 tabular() 및 latex()에서 생성된 테이블 크기 제어

R 함수 tabular() 및 latex()에서 생성된 테이블 크기 제어

이 질문이 다음과 같은 경우에 더 적합한지 확실하지 않다는 점을 미리 말씀드립니다.교차검증됨또는 이 사이트의 경우. 그런데 여기 latex()에서 명령어 에 대한 질문을 여러개 봤기 때문에 Hmisc이 사이트에는 이 질문이 적합하다고 생각합니다.

저는 비교적 경험이 R많은 사용자이지만 LaTeX. .R​ 가능하다면 내에서 이러한 파일을 완전히 생성하는 것을 선호합니다 R. 몇번의 검색 끝에 나는 다음과 같은 조합을 통해 이 작업을 수행하기로 결정했습니다.tables패키지와 latex()기능Hmisc.

제가 만들고 있는 표 중 일부는 상당히 크기 때문에 제가 만든 PDF를 검토할 때 표가 페이지에서 벗어나는 경향이 있습니다. 내가 하고 싶은 것은 명령 latex()이나 tabular()내부 명령 을 사용하여 R결과 PDF에 나타나는 테이블의 크기를 줄이는 것입니다. 함수 latex에 " size" 인수가 있지만 size = "small"을 호출하여 생성된 테이블에서는 지정이 작동하지 않는 것 같습니다 tabular(). 누구든지 조언이 있습니까?

일부 샘플 코드는 아래에서 확인할 수 있습니다.

require(tables)
require(Hmisc)

# Create sample data
Condition <- factor(rep(c("Control", "Experimental"), 150))
Time <- factor(rep(c("Baseline", "Baseline", "Three days", "Three days", 
   "Three weeks", "Three weeks"), 50))
var1 <- rnorm(300)
var2 <- rnorm(300)
var3 <- rnorm(300)
var4 <- rnorm(300)
var5 <- rnorm(300)
var6 <- rnorm(300)

# Add to data frame, sprinkle in missing values
d <- data.frame(Condition, Time, var1, var2, var3, var4, var5, var6)
d[sample(1:300, 30), c("var1", "var2", "var3", "var4")] <- NA
d[sample(1:300, 20), c("var5", "var6")] <- NA

# Create helper functions
mean.narm <- function(x) mean(x, na.rm = TRUE)
sd.narm <- function(x) sd(x, na.rm = TRUE)
count.obs <- function(x) sum(!is.na(x))
# Use tabular() from tables
tab <- tabular((Heading("Variable 1") * var1 + Heading("Variable 2") * var2 + 
   Heading("Variable 3") * var3 + Heading("Variable 4") * var4 + Heading("Variable 5") * var5 + 
   Heading("Variable 6") * var6) * Time ~ Condition * ((N=count.obs) + (Mean=mean.narm) + (SD=sd.narm)),
           data = d)

# Ensure that pdflatex is used when I call latex(), below
options(latexcmd = "pdflatex")
options(dviExtension = "pdf")
options(xdvicmd = "C:/PROGRA~1/R/R-215~1.3/bin/i386/open.exe")
# Use the latex() function
latex(tab, "table1.tex")

편집: 요청한 대로 아래는 에 대한 호출에서 얻은 코드입니다 latex(tab, ""). 위에서 언급했듯이 내가 원하는 것은 함수에 의해 생성된 LaTeX를 수동으로 수정하는 것이 아니라 latex()호출에서 생성된 LaTeX 코드가 latex()더 작은 테이블을 생성하도록 하는 것입니다.

\begin{tabular}{llcccccc}
\hline
& & \multicolumn{6}{c}{Condition} \\ 
& & \multicolumn{3}{c}{Control} & \multicolumn{3}{c}{Experimental} \\ 
 & Time & N & Mean & SD & N & Mean & \multicolumn{1}{c}{SD} \\ 
\hline
Variable 1 & Baseline  & $42$ & $\phantom{-}0.029831$ & $1.0657$ & $46$ & $\phantom{-}0.0067612$ & $1.0687$ \\
 & Three days  & $44$ & $\phantom{-}0.109871$ & $1.0161$ & $43$ & $-0.1633312$ & $1.1552$ \\
 & Three weeks  & $47$ & $\phantom{-}0.160282$ & $1.0613$ & $48$ & $\phantom{-}0.1055877$ & $0.9537$ \\
Variable 2 & Baseline  & $42$ & $-0.166005$ & $1.1078$ & $46$ & $\phantom{-}0.0012202$ & $0.9659$ \\
 & Three days  & $44$ & $-0.205125$ & $0.9315$ & $43$ & $-0.2294237$ & $1.0693$ \\
 & Three weeks  & $47$ & $-0.164718$ & $1.0122$ & $48$ & $-0.0769583$ & $1.0418$ \\
Variable 3 & Baseline  & $42$ & $\phantom{-}0.077019$ & $1.0643$ & $46$ & $\phantom{-}0.0798812$ & $1.0396$ \\
 & Three days  & $44$ & $-0.282688$ & $0.9023$ & $43$ & $\phantom{-}0.1299074$ & $0.9916$ \\
 & Three weeks  & $47$ & $-0.291495$ & $1.0138$ & $48$ & $-0.0240293$ & $1.0309$ \\
Variable 4 & Baseline  & $42$ & $-0.247300$ & $1.0963$ & $46$ & $-0.0409480$ & $1.0901$ \\
 & Three days  & $44$ & $-0.158524$ & $1.0995$ & $43$ & $\phantom{-}0.1486800$ & $0.8722$ \\
 & Three weeks  & $47$ & $-0.149038$ & $0.8798$ & $48$ & $-0.0002842$ & $0.9750$ \\
Variable 5 & Baseline  & $49$ & $\phantom{-}0.008081$ & $0.8102$ & $47$ & $-0.3131353$ & $1.0592$ \\
 & Three days  & $45$ & $-0.241864$ & $1.0037$ & $45$ & $\phantom{-}0.1130470$ & $0.8106$ \\
 & Three weeks  & $44$ & $-0.177473$ & $1.0706$ & $50$ & $-0.0264635$ & $0.7805$ \\
Variable 6 & Baseline  & $49$ & $\phantom{-}0.013659$ & $1.0833$ & $47$ & $-0.0967571$ & $1.0676$ \\
 & Three days  & $45$ & $\phantom{-}0.098045$ & $0.9842$ & $45$ & $\phantom{-}0.0756736$ & $0.9613$ \\
 & Three weeks  & $44$ & $-0.152400$ & $1.0654$ & $50$ & $-0.2145893$ & $1.0157$ \\
\hline 
\end{tabular}

답변1

tables의 패키지를 사용하고 있으므로 R를 사용해야 합니다 Sweave. 다음은 .Rnw귀하에게 적합한 파일 입니다 . 나는 에 대한 배경 지식이 별로 없습니다 R. 저는 단지 몇 가지 기본적인 통계 계산에만 사용합니다. 그래서 명령어를 이용하여 테이블의 크기를 설정할 수 있는지에 대해 확실한 답변을 드릴 수 없는 점 죄송합니다 latex(). 그것이 유일한 선택이었다면, 나는 직접 물어보는 것을 제안할 것입니다교차검증됨.

이것을 다른 이름으로 저장 foobar.Rnw하고 작업 디렉토리에 넣으십시오. 이제 R에서 setwd()(아직 설정하지 않은 경우)을 사용하여 작업 디렉터리를 설정합니다 . 이제 실행

Sweave("foobar.Rnw")

이 작업에 성공했다면 다음을 확인해야 합니다.

You can now run (pdf)latex on ‘tableprosweave.tex’

마지막에.

이제 작업 디렉토리에서 foobar.tex선호하는 TeX 편집기를 열고 실행하거나 pdflatex그냥 실행하세요.

pdflatex foobar

터미널/명령줄에서.

foobar.Rnw:

\documentclass{article}

\usepackage{Sweave}
\usepackage{booktabs}

\begin{document}
\SweaveOpts{concordance=TRUE, keep.source=TRUE}
<<echo=false>>=
options(width=60)
@

<<>>=
require(tables)
require(Hmisc)

booktabs() % To use booktabs formatting

# Create sample data
Condition <- factor(rep(c("Control", "Experimental"), 150))
Time <- factor(rep(c("Baseline", "Baseline", "Three days", "Three days", 
   "Three weeks", "Three weeks"), 50))
var1 <- rnorm(300)
var2 <- rnorm(300)
var3 <- rnorm(300)
var4 <- rnorm(300)
var5 <- rnorm(300)
var6 <- rnorm(300)

# Add to data frame, sprinkle in missing values
d <- data.frame(Condition, Time, var1, var2, var3, var4, var5, var6)
d[sample(1:300, 30), c("var1", "var2", "var3", "var4")] <- NA
d[sample(1:300, 20), c("var5", "var6")] <- NA

# Create helper functions
mean.narm <- function(x) mean(x, na.rm = TRUE)
sd.narm <- function(x) sd(x, na.rm = TRUE)
count.obs <- function(x) sum(!is.na(x))
# Use tabular() from tables

tab <- tabular((Heading("Variable 1") * var1 + Heading("Variable 2") * var2 + 
   Heading("Variable 3") * var3 + Heading("Variable 4") * var4 + Heading("Variable 5") * var5 + 
   Heading("Variable 6") * var6) * Time ~ Condition * ((N=count.obs) + (Mean=mean.narm) + (SD=sd.narm)),
           data = d)
@

\newpage

% Here, \small was written just before the code chunk.

\begin{center}
\small
<<results=tex,echo=FALSE>>=
latex(
tab
)
@
\end{center}

\vfill

% Here, \scriptsize was written just before the code chunk.

\begin{center}
\scriptsize
<<results=tex,echo=FALSE>>=
latex(
tab
)
@
\end{center}

%<<>>=
%# Ensure that pdflatex is used when I call latex(), below
%options(latexcmd = "pdflatex")
%options(dviExtension = "pdf")
%options(xdvicmd = "C:/PROGRA~1/R/R-215~1.3/bin/i386/open.exe")
%# Use the latex() function
%#latex(tab, file="table1.tex")
%@

\end{document}

나는 마지막 줄이 무엇을 하는지, 내 컴퓨터에서 파일을 컴파일할 수 있는지 잘 모르기 때문에 주석 처리했습니다. :-)다음은 두 번째 페이지 출력입니다.

여기에 이미지 설명을 입력하세요

실제로 테이블 출력 바로 뒤에 있는 경우 코드 청크 앞에 \small또는 등을 쓰는 것이 좋습니다 . 다시 말하지만, 의 기능 \footnotesize만으로 이 작업을 수행하는 방법을 모르겠습니다 . 보다latex()Rmanual에 대한 자세한 내용은 Sweave.

.Rnw일부 편집기에서는 다음과 같은 소스에서 직접 편집하고 컴파일할 수 있습니다 .알스튜디오. AFAIK,Texmaker처리할 수도 있습니다.

관련 정보