[r] R에서 라텍스 테이블을 만들기위한 도구 [닫기]
일반적인 요청에 따라 R에서 라텍스 테이블 생성에 대한 커뮤니티 위키가 있습니다.이 게시물에서는 가장 일반적으로 사용되는 패키지 및 블로그에 대해 간략하지 않은 오브젝트에서 라텍스 테이블을 생성하기위한 코드에 대한 개요를 제공합니다. 내가 놓친 부분을 자유롭게 추가하거나 R로 멋진 형식의 라텍스 테이블을 생성하는 방법에 대한 팁, 힌트 및 작은 요령을 알려주십시오.
패키지 :
- xtable : 가장 간단한 객체의 표준 테이블 용. 예제가 담긴 멋진 갤러리는 여기 에서 찾을 수 있습니다 .
- memisc : 측량 데이터 관리 도구로, (기본) 회귀 모델 추정치의 라텍스 테이블을위한 일부 도구가 포함되어 있습니다.
- Hmisc 에는
latex()
선택한 객체를 포함하는 tex 파일을 생성 하는 함수 가 포함되어 있습니다 . 매우 유연하며longtable
라텍스 테이블을 출력 할 수도 있습니다. 도움말 파일에 많은 정보가 있습니다?latex
- miscFuncs 에는 알파벳과 숫자가 혼합 된 행렬 데이터를 LaTeX 테이블로 변환하여 콘솔에 인쇄하여 LaTeX 문서에 복사하여 붙여 넣을 수있는 깔끔한 기능인 ‘latextable’이 있습니다.
- texreg 패키지 ( JSS paper )는 통계 모델 출력을 LaTeX 테이블로 변환합니다. 여러 모델을 병합합니다. 네트워크 모델 및 다단계 모델 (lme 및 lme4)을 포함하여 약 50 가지 모델 유형을 처리 할 수 있습니다.
- reporttools package ( JSS paper )는 연속 형, 범주 형 및 날짜 변수에 대한 설명 통계를위한 또 다른 옵션입니다.
- 테이블 패키지는 기술 통계량을 위해 R에서 가장 일반적인 LaTeX 테이블 작성 패키지 일 것입니다.
- stargazer 패키지는 훌륭한 비교 통계 모델 요약표를 만듭니다.
블로그 및 코드 스 니펫
- Paul Johnson 의 outreg 함수 는 회귀 결과를 위해 Stata와 같은 테이블을 라텍스에 제공합니다. 이것은 훌륭하게 작동합니다.
- 이전 질문에서 주어진 것처럼 , memec 패키지를 lme4 객체 에 맞게 조정 하는 코드 스 니펫이 있습니다 .
관련 질문 :
답변
“brew”패키지에 대한 언급을 추가하고 싶습니다. 플레이스 홀더가있는 LaTeX 인 BREW 템플릿 파일을 작성한 다음 “BREW”하여 LaTeX에 \ include 또는 \ input 할 .tex 파일을 작성할 수 있습니다. 다음과 같은 것 :
\begin{tabular}{l l}
A & <%= fit$A %> \\
B & <%= fit$B %> \\
\end{tabular}
brew 구문은 루프를 처리 할 수 있으므로 데이터 프레임의 각 행에 대해 테이블 행을 만들 수 있습니다.
답변
이 질문을 작성해 주셔서 감사합니다. 바라건대 커뮤니티 위키로 만들어지기를 바랍니다.
라텍스의 북탭 패키지는 멋진 테이블을 만들어냅니다. 다음은 xtable을 사용하여 북탭을 사용하는 라텍스 테이블 을 만드는 방법에 대한 블로그 게시물입니다.
apsrtable
멋진 회귀 테이블을 생성 하므로 패키지를 믹스에 추가합니다 .
또 다른 아이디어 :이 패키지 중 일부 (예 : memisc 및 apsrtable)를 사용하면 코드를 쉽게 확장하여 다른 회귀 객체에 대한 테이블을 생성 할 수 있습니다. 그러한 예 중 하나는 질문에 표시된 lme4 memisc 코드입니다. 그러한 코드 스 니펫을 수집하기 위해 github 저장소를 시작하는 것이 합리적이며 시간이 지남에 따라 memisc 패키지에 추가 할 수도 있습니다. 응시자?
답변
몽 상가의 패키지는 또 다른 좋은 옵션입니다. zelig뿐만 아니라 일반적으로 사용되는 많은 기능과 패키지 (lm, glm, svyreg, survival, pscl, AER)의 객체를 지원합니다. 회귀 테이블 외에도 데이터 프레임에 대한 요약 통계를 출력하거나 데이터 프레임의 내용을 직접 출력 할 수 있습니다.
답변
여기에 공유 할 xtable과 Latex의 흥미로운 ‘기능’에 대한 몇 가지 트릭과 해결 방법이 있습니다.
트릭 # 1 : 열 및 트릭 # 2에서 중복 제거 : 북탭 사용
먼저 패키지를로드하고 깨끗한 기능을 정의하십시오.
<<label=first, include=FALSE, echo=FALSE>>=
library(xtable)
library(plyr)
cleanf <- function(x){
oldx <- c(FALSE, x[-1]==x[-length(x)])
# is the value equal to the previous?
res <- x
res[oldx] <- NA
return(res)}
이제 가짜 데이터를 생성하십시오.
data<-data.frame(animal=sample(c("elephant", "dog", "cat", "fish", "snake"), 100,replace=TRUE),
colour=sample(c("red", "blue", "green", "yellow"), 100,replace=TRUE),
size=rnorm(100,mean=500, sd=150),
age=rlnorm(100, meanlog=3, sdlog=0.5))
#generate a table
datatable<-ddply(data, .(animal, colour), function(df) {
return(data.frame(size=mean(df$size), age=mean(df$age)))
})
이제 테이블을 생성하고 clean 함수를 사용하여 레이블 열에서 중복 항목을 제거 할 수 있습니다.
cleandata<-datatable
cleandata$animal<-cleanf(cleandata$animal)
cleandata$colour<-cleanf(cleandata$colour)
@
이것은 정상적인 xtable입니다
<<label=normal, results=tex, echo=FALSE>>=
print(
xtable(
datatable
),
tabular.environment='longtable',
latex.environments=c("center"),
floating=FALSE,
include.rownames=FALSE
)
@
이것은 커스텀 함수가 NA로 복제 된 일반적인 xtable입니다.
<<label=cleandata, results=tex, echo=FALSE>>=
print(
xtable(
cleandata
),
tabular.environment='longtable',
latex.environments=c("center"),
floating=FALSE,
include.rownames=FALSE
)
@
이 테이블은 북탭 패키지를 사용하며 헤더에 \ usepackage {booktabs}가 필요합니다.
\begin{table}[!h]
\centering
\caption{table using booktabs.}
\label{tab:mytable}
<<label=booktabs, echo=F,results=tex>>=
mat <- xtable(cleandata,digits=rep(2,ncol(cleandata)+1))
foo<-0:(length(mat$animal))
bar<-foo[!is.na(mat$animal)]
print(mat,
sanitize.text.function = function(x){x},
floating=FALSE,
include.rownames=FALSE,
hline.after=NULL,
add.to.row=list(pos=list(-1,bar,nrow(mat)),
command=c("\\toprule ", "\\midrule ", "\\bottomrule ")))
#could extend this with \cmidrule to have a partial line over
#a sub category column and \addlinespace to add space before a total row
@
답변
taRifx 패키지의 두 가지 유틸리티를 함께 사용하여 중첩 된 계층의 다중 행 테이블을 생성 할 수 있습니다.
library(datasets)
library(taRifx)
library(xtable)
test.by <- bytable(ChickWeight$weight, list( ChickWeight$Chick, ChickWeight$Diet) )
colnames(test.by) <- c('Diet','Chick','Mean Weight')
print(latex.table.by(test.by), include.rownames = FALSE, include.colnames = TRUE, sanitize.text.function = force)
# then add \usepackage{multirow} to the preamble of your LaTeX document
# for longtable support, add ,tabular.environment='longtable' to the print command (plus add in ,floating=FALSE), then \usepackage{longtable} to the LaTeX preamble
답변
… 및 Xtable의 Trick # 3 여러 줄 항목
더 많은 데이터 생성
moredata<-data.frame(Nominal=c(1:5), n=rep(5,5),
MeanLinBias=signif(rnorm(5, mean=0, sd=10), digits=4),
LinCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""),
MeanQuadBias=signif(rnorm(5, mean=0, sd=10), digits=4),
QuadCI=paste("(",signif(rnorm(5,mean=-2, sd=5), digits=4),
", ", signif(rnorm(5, mean=2, sd=5), digits=4),")",sep=""))
names(moredata)<-c("Nominal", "n","Linear Model \nBias","Linear \nCI", "Quadratic Model \nBias", "Quadratic \nCI")
이제 sanitize 함수를 사용하여 열 이름을 올바른 Latex 개행 명령으로 대체하는 xtable을 생성하십시오 (이중 백 슬래시를 포함하므로 R은 행복합니다)
<<label=multilinetable, results=tex, echo=FALSE>>=
foo<-xtable(moredata)
align(foo) <- c( rep('c',3),'p{1.8in}','p{2in}','p{1.8in}','p{2in}' )
print(foo,
floating=FALSE,
include.rownames=FALSE,
sanitize.text.function = function(str) {
str<-gsub("\n","\\\\", str, fixed=TRUE)
return(str)
},
sanitize.colnames.function = function(str) {
str<-c("Nominal", "n","\\centering Linear Model\\\\ \\% Bias","\\centering Linear \\\\ 95\\%CI", "\\centering Quadratic Model\\\\ \\%Bias", "\\centering Quadratic \\\\ 95\\%CI \\tabularnewline")
return(str)
})
@
(이것이 완벽하지는 않지만 \ tabularnewline이 필요하므로 테이블의 형식이 올바르게 지정되고 Xtable은 여전히 최종 \를 넣으므로 테이블 헤더 아래에 빈 줄이 생깁니다.)
답변
R 패키지 micsFuncs에서 라텍스 테이블 함수를 사용할 수도 있습니다.
http://cran.r-project.org/web/packages/miscFuncs/index.html
latextable (M) 여기서 M은 알파벳과 숫자가 혼합 된 행렬로, 기본 LaTeX 테이블을 화면에 출력하여 LaTeX 문서에 복사하여 붙여 넣을 수 있습니다. 작은 숫자가있는 경우 인덱스 표기법 (예 : 1.2×10 ^ {-3})으로 대체합니다.