代码之家  ›  专栏  ›  技术社区  ›  PaulHurleyuk

如何使用r以编程方式将多个表包含到swave文档中

  •  6
  • PaulHurleyuk  · 技术社区  · 16 年前

    我想有一个swave文档,它将包含可变数量的表。我原以为下面的示例可以工作,但不行,我想循环遍历list foo并将每个元素打印为自己的表。

    % 
    \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}
    

    在这里,table1test块按预期工作,并基于foo[[1]]中的dataframe生成一个表,但是循环只生成table(下划线)1….

    1 回复  |  直到 9 年前
        1
  •  6
  •   Shane    16 年前

    这是由以下语句中的下划线引起的:

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

    如果你把它改成

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

    或

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

    它运行。你想要那些数字作为下标吗?