2010-04-28 35 views
6

Tôi muốn có một tài liệu xoay quanh sẽ bao gồm một số lượng bảng thay đổi. Tôi nghĩ ví dụ bên dưới sẽ hoạt động nhưng không. Tôi muốn lặp lại danh sách foo và in từng phần tử dưới dạng bảng riêng của nó.Cách bao gồm nhiều bảng lập trình vào tài liệu Sweave bằng cách sử dụng R

% 
\documentclass[a4paper]{article} 
\usepackage[OT1]{fontenc} 
\usepackage{longtable} 
\usepackage{geometry} 
\usepackage{Sweave} 
\geometry{left=1.25in, right=1.25in, top=1in, bottom=1in} 
\listfiles 
\begin{document} 

<<label=start, echo=FALSE, include=FALSE>>= 
startt<-proc.time()[3] 
library(RODBC) 
library(psych) 
library(xtable) 
library(plyr) 
library(ggplot2) 
options(width=80) 

#Produce some example data, here I'm creating some dummy dataframes and putting them in a list 
foo<-list() 
foo[[1]]<-data.frame(GRP=c(rep("AA",10), rep("Aa",10), rep("aa",10)), X1=rnorm(30), X2=rnorm(30,5,2)) 
foo[[2]]<-data.frame(GRP=c(rep("BB",10), rep("bB",10), rep("BB",10)), X1=rnorm(30), X2=rnorm(30,5,2)) 
foo[[3]]<-data.frame(GRP=c(rep("CC",12), rep("cc",18)), X1=rnorm(30), X2=rnorm(30,5,2)) 
foo[[4]]<-data.frame(GRP=c(rep("DD",10), rep("Dd",10), rep("dd",10)), X1=rnorm(30), X2=rnorm(30,5,2)) 
@ 

\title{Docuemnt to test putting a variable number of tables into a sweave Document} 
\author{"Paul Hurley"} 
\maketitle 

\section{Text} 

This document was created on \today, with \Sexpr{print(version$version.string)} running 
on a \Sexpr{print(version$platform)} platform. It took approx \input{time} sec to process. 

<<label=test, echo=FALSE, results=tex>>= 
cat("Foo") 
@ 
that was a test, so is this 
<<label=table1test, echo=FALSE, results=tex>>= 
print(xtable(foo[[1]])) 
@ 
\newpage 

\subsection{Tables} 

<<label=Tables, echo=FALSE, results=tex>>= 
for(i in seq(foo)){ 
    cat("\n") 
    cat(paste("Table_",i,sep="")) 
    cat("\n") 
    print(xtable(foo[[i]])) 
    cat("\n") 
    } 
#cat("<<label=endofTables>>= ") 
@ 


<<label=bye, include=FALSE, echo=FALSE>>= 
endt<-proc.time()[3] 
elapsedtime<-as.numeric(endt-startt) 
@ 
<<label=elapsed, include=FALSE, echo=FALSE>>= 
fileConn<-file("time.tex", "wt") 
writeLines(as.character(elapsedtime), fileConn) 
close(fileConn) 
@ 

\end{document} 

Ở đây, đoạn table1test hoạt động như mong đợi, và tạo ra một bảng dựa trên dataframe trong foo [[1]], tuy nhiên vòng lặp chỉ sản xuất Bảng (gạch dưới) 1 ....

+0

+1 Ví dụ dễ tái sản xuất. Nếu bạn nhìn vào tài liệu latex cuối cùng, bạn có thấy các bảng khác không? – Shane

Trả lời

6

này đã được gây ra bởi các dấu gạch chân trong bản tuyên Bố này:

cat(paste("Table_",i,sep="")) 

Nếu bạn thay đổi nó để

cat(paste("Table ",i,sep="")) 

Hoặc

cat(paste("Table\\textunderscore",i,sep="")) 

Chạy. Bạn có muốn những con số đó dưới dạng bảng con không?

+0

mặt <-palm .... Cảm ơn Shane, tôi đã dành hai giờ nhìn chằm chằm vào đó và không bao giờ nhìn thấy nó .... – PaulHurleyuk

Các vấn đề liên quan