[R-es] Como exportar desde Consola R?

rubenfcasal rubenfcasal en gmail.com
Mar Abr 8 11:54:18 CEST 2014


Hola a todos,

     Yo acostumbro a realizar simulaciones y analizar conjuntos de datos 
periódicamente. En la mayoría de los casos en los que necesito hacer 
informes utilizo un código propio basado en el paquete R2HTML (tengo 
pensado convertirlo en paquete cuando tenga tiempo).
     La idea es obtener fácilmente unos resultados que se parezcan a los 
obtenidos con un software comercial como el SPSS, para facilitar el 
navegar por los resultados, hacer comparaciones, etc. Para ello lo único 
que hice fue combinar los informes html del paquete R2HTML con un menú a 
la izquierda (ademas los archivos correspondientes se guardan en un 
subdirectorio) . Una de las ventajas respecto a knitr sería que no es 
necesario compilar y se pueden ir añadiendo resultados sobre la marcha 
(podríamos decir que desde R se controlan los resultados, en lugar de 
que el sistema de resultados controle R) .

     Os envío el código como adjunto por si os resulta de interés. En el 
fichero zip está un análisis automático de un fichero de datos (una 
encuesta que empleamos en la docencia de estadística) como ejemplo de 
como utilizar esta herramienta. Abrir el fichero html para ver el 
'informe' (se podría abrir desde word...).

     Un saludo,
         Rubén Fernández Casal.



El 08/04/2014 1:07, "Marcuzzi, Javier Rubén" escribió:
> Yo comparto lo expuesto por Carlos Gil Bellosta, creo que para cuándo 
> uno trabaja en un ambiente personal, me refiero, a No buscar reportes 
> para terceros, knitr puede ser de ayuda,  porque podría colocar un 
> modelo sobre el otro e imprimirlos o guardar como html, sin tener la 
> necesidad de procesar con R, compilar a pdf, etc.
>
> Pero, hay que escribir en las reglas de knitr. Creo que es más fácil 
> escribir desde cero (copiando y pegando) que adaptar a que R escriba 
> archivos txt para analizarlos.
>
> Javier Marcuzzi
>
> El 07/04/2014 08:41 a.m., Carlos J. Gil Bellosta escribió:
>> Usa knitr sobre RStudio.
>>
>> Un saludo,
>>
>> Carlos J. Gil Bellosta
>> http://www.datanalytics.com
>>
>> El día 7 de abril de 2014, 12:28, Lorena Tudela Marco
>> <lorenatudelamarco en gmail.com> escribió:
>>> Hola a tod en s
>>>
>>> Estoy trabajando con modelos diferentes en R y me gustaría poder 
>>> estudiar
>>> mas detalladamente los resultados obtenidos en la Consola de R.
>>>
>>> *¿Como puedo exportar los resultados de la consola de R a word o pdf?*
>>>
>>> Aprovecho para agradecer y felicitaros por este espacio de debate y
>>> trabajo, creo que realmente es bien interesante y útil poder compartir
>>> dudas y sugerencias,
>>>
>>> Muchas gracias,
>>>
>>> Un abrazo
>>>
>>> Lorena
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

------------ próxima parte ------------
#------------------------------------------------------------------------
#     R2HTML2: Utilities to generate reports with the R2HTML package
#       require(R2HTML)
#     -------------------------------------------------------------------
#     html2.init
#     html2.exit
#       .html.initfile
#       .html.menu.tit
#       .html.menu.subtit
#       .html.main.marc
#     html2.title
#     html2.subtitle
#     html2
#     html2.graph
#     html2.png
#     -------------------------------------------------------------------
#     Copyright (C) 2002-2004 - R2HTML Package - Eric Lecoutre 
#     Copyright (C) 2011-2014 - Ruben Fernandez Casal - rubenfcasal <at> gmail <dot> com
#     
#     This program is free software; you can redistribute it and/or modify
#     it under the terms of the GNU General Public License as published by
#     the Free Software Foundation; either version 2 of the License, or
#     (at your option) any later version.
#                         
#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU General Public License for more details.
#------------------------------------------------------------------------


#--------------------------------------------------------
# html2.init
#--------------------------------------------------------
html2.init <- function(file="Report", dir=getwd(), css="Pastel.css", logo="R2HTMLlogo.gif")
{
    if(!require(R2HTML)) stop("R2HTML package is required.")
    .html.env <<- new.env()
    .html.env$NumMarc <- 0  
    .html.env$NumGraph <- 0  
    .html.env$NumAna <- 0  
    .html.env$file <- file
    .html.env$dir <- dir
    .html.env$dirw <- file.path(dir,paste(file,"_files",sep=""))
    if (!file.exists(.html.env$dirw)) dir.create(.html.env$dirw)   
    file.copy(file.path(tempdir(), css), file.path(.html.env$dirw, css))
    file.copy(file.path(tempdir(), "R2HTMLlogo.gif"), file.path(.html.env$dirw, "R2HTMLlogo.gif"))
    .html.env$logo <- logo
    .html.env$absfile <- .html.initfile(outdir=dir, filename=file, Title=file, CSSFile=css, logo=.html.env$logo)
    .html.env$relmainfile <- paste(file,"_main.html",sep="")
    .html.env$mainfile <- file.path(.html.env$dirw,.html.env$relmainfile)
    .html.env$menufile <- file.path(.html.env$dirw,paste(file,"_menu.html",sep=""))
    .html.env$WGraphHTML <- 600 #Tamaño gráficos HTML
    return(list(file=file,dir=dir,css=css))
}


#--------------------------------------------------------
# html2.exit
#--------------------------------------------------------
html2.exit <- function(browse = TRUE) 
{
    # HTMLEndFile()
    cat("\n<hr size=1>\n<font size=-1>\n\t Generated on: <i>", 
        date(), "</i> - <b>R2HTML(2)</b> \n<hr size=1>\n\t</body>\n</html>", 
        sep = "", append = TRUE, file = get(".HTML.file"))
    file <- file.path(.html.env$dir,paste(.html.env$file,".html",sep=""))
    if (browse) browseURL(url= file)
    rm(.html.env, envir=.GlobalEnv)    
    return(file)
}

#--------------------------------------------------------
# .html.initfile
#--------------------------------------------------------
.html.initfile  <- function (outdir = tempdir(), filename = "index", extension = "html", BackGroundColor = "FFFFFF", BackGroundImg = "", 
    Title = "R output", CSSFile = "R2HTML.css", logo="R2HTMLlogo.gif", useLaTeX = FALSE, useGrid = FALSE) 
{
  # HTMLframe = TRUE
    filemenu <- paste(filename, "_files/", filename, "_menu.", extension, sep = "")
    filemain <- paste(filename, "_files/", filename, "_main.", extension, sep = "")
    absfilemenu <- file.path(outdir, filemenu)  
    file <- absfilemain <- file.path(outdir, filemain)
    absfileindex <- file.path(outdir, paste(filename, ".", extension, sep = ""))
    assign(".HTML.file", absfilemain, env = .GlobalEnv)
    cat(paste("<html><head>\t\n <title>", Title, "</title>\n <meta http-equiv=content-type content=text/html;charset=iso-8859-1>\n <frameset cols=250,* border=1 frameborder=yes><frame src=", 
        filemenu, " name=menu scrolling=yes><frame src=", 
        filemain, " name=main scrolling=yes></frameset></body></html>"), 
        append = FALSE, sep = "", file = absfileindex)
    cat("<html><head><link rel=stylesheet href=", CSSFile, 
        " type=text/css> </head><body bgcolor=\"#E5F5FF\">  <center> <img src=",logo," width=\"164\"> <hr size=1></center><br>", 
        sep = "", append = FALSE, file = absfilemenu)
    txt <- ifelse(useLaTeX, "<html xmlns:mml=\"http://www.w3.org/1998/Math/MathML\">", "<html>")
    txt <- c(txt, "<head>")
    txt <- c(txt, paste("<title>", Title, "</title>"))
    txt <- c(txt, paste("<link rel=stylesheet href=\"", CSSFile, "\" type=text/css>", sep = ""))
    if (useLaTeX) 
        txt <- c(txt, "<object id=\"mathplayer\" classid=\"clsid:32F66A20-7614-11D4-BD11-00104BD3F987\"></object>\n<?import namespace=\"mml\" implementation=\"#mathplayer\"?>\n<script type=\"text/javascript\" src=\"ASCIIMathML.js\"></script>")
    if (useGrid) {
        txt <- c(txt, HTMLgrid_references())
        txt <- c(txt, "<script>\n   nequations=0;\n</script>")
    }
    txt <- c(txt, "</head>")
    body <- c("<body")
    if (useLaTeX) 
        body = c(body, " onload=\"translate()\"")
    body = c(body, paste(" bgcolor=", BackGroundColor))
    if (!is.null(BackGroundImg)) 
        body = c(body, paste(" background=\"", BackGroundImg, "\"", sep = ""))
    body <- c(body, " >")
    body = paste(body, collapse = "")
    txt <- c(txt, body)
    txt <- paste(txt, collapse = "\n")
    cat(txt, file = absfilemain, append = FALSE)
    return(invisible(absfileindex))
}
 
#--------------------------------------------------------
# .html.menu.tit
#--------------------------------------------------------
.html.menu.tit <- function(title, file=.html.env$menufile, Num=.html.env$NumMarc, target=.html.env$relmainfile, append=TRUE,...)
{
  	cat("\n",file=file,append=append,...)
    cat(paste("<br></li><li><a class=partitle href='./",target,"#Num",Num,"' target=main> ",paste(title,collapse=""),"</a>",sep=""),file=file,append=TRUE,sep="")
}

#--------------------------------------------------------
# .html.menu.subtit
#--------------------------------------------------------
.html.menu.subtit <- function(title, file=.html.env$menufile, Num=.html.env$NumMarc, target=.html.env$relmainfile, append=TRUE,...)
{
  	cat("\n",file=file,append=append,...)
    cat(paste("<br><dd><NOBR><a class=command href='./",target,"#Num",Num,"' target=main>",paste(title,collapse=""),"</a></NOBR>",sep=""),file=file,append=TRUE,sep="")
}

#--------------------------------------------------------
# .html.main.marc
#--------------------------------------------------------
.html.main.marc <- function(file=.html.env$mainfile)
{
    .html.env$NumMarc <- .html.env$NumMarc + 1 
    cat(paste("<a name=Num", .html.env$NumMarc, ">&nbsp</a>", sep = ""), file = file, sep = "", append = TRUE)  # CAT
}

#--------------------------------------------------------
# html2.title
#--------------------------------------------------------
html2.title <- function(title= paste("Analysis",.html.env$NumAna), file=.html.env$mainfile, menufile=.html.env$menufile, target=.html.env$relmainfile)
{
    .html.env$NumAna <- .html.env$NumAna + 1 
    .html.main.marc(file) 
    .html.menu.tit(title, menufile, .html.env$NumMarc, target = target)
    HTML.title(title, HR=1, file=file)   # R2HTML
    return(invisible(.html.env$NumMarc))
}

#--------------------------------------------------------
# html2.subtitle
#--------------------------------------------------------
html2.subtitle <- function(title= paste("Analysis",.html.env$NumAna), file=.html.env$mainfile, menufile=.html.env$menufile, target=.html.env$relmainfile)
{
    .html.main.marc(file) 
    .html.menu.subtit(title, menufile, .html.env$NumMarc, target = target)
    HTML.title(title, HR=2, file=file)   # R2HTML
    return(invisible(.html.env$NumMarc))
}


#--------------------------------------------------------
# html2
#--------------------------------------------------------
html2 <- function(output= .Last.value, title=paste("· Output",class(output)[1]), file=.html.env$mainfile, menufile=.html.env$menufile, target=.html.env$relmainfile)
{
    .html.env$Last <- output
    html2.subtitle(title=title, file=file, menufile=menufile, target=target)
    HTML(output, file=file) # R2HTML
    HTMLbr(x=2,file=file,append=TRUE)   # R2HTML
    return(invisible(list(NumMarc=.html.env$NumMarc,title=title,file=file,menufile=menufile)))
}

#--------------------------------------------------------
# html2.graph
#--------------------------------------------------------
html2.graph <- function(title=paste("· Graph", .html.env$NumGraph), caption=NULL, filegraf=paste(.html.env$file,sprintf("%02i",.html.env$NumGraph),sep="-"), dir=.html.env$dirw, file=.html.env$mainfile, menufile=.html.env$menufile, target=.html.env$relmainfile)
{
    .html.env$NumGraph <- .html.env$NumGraph + 1
    html2.subtitle(title=title, file=file, menufile=menufile, target=target)
    # Copia en pdf
    savePlot(filename = file.path(dir, paste(filegraf,".pdf",sep="")), type = "pdf")   
    # Fin copia pdf
    filegraf <- paste(filegraf,".png",sep="")
    savePlot(filename = file.path(dir,filegraf), type = "png")
    HTMLInsertGraph(filegraf, Caption=ifelse(is.null(caption), filegraf, caption), WidthHTML=.html.env$WGraphHTML, file=file)   # R2HTML
    HTMLbr(x=2,file=file,append=TRUE) # R2HTML
    return(invisible(list(NumMarc=.html.env$NumMarc,title=title,file=file,menufile=menufile,NumGraph=.html.env$NumGraph)))
}


#--------------------------------------------------------
# html2.png (equivalent to png(); use dev.off() to shut down the device
#--------------------------------------------------------
html2.png <- function(title=paste("· Gráfico", .html.env$NumGraph), caption=NULL, filegraf=paste(.html.env$file,sprintf("%02i",.html.env$NumGraph),sep="-"), dir=.html.env$dirw, file=.html.env$mainfile, menufile=.html.env$menufile, target=.html.env$relmainfile)
{
    .html.env$NumGraph <- .html.env$NumGraph + 1
    html2.subtitle(title=title, file=file, menufile=menufile, target=target)
    filegraf <- paste(filegraf,".png",sep="")
    png(filename = file.path(dir,filegraf), width = .html.env$WGraphHTML, height = .html.env$WGraphHTML)
    HTMLInsertGraph(filegraf, Caption=ifelse(is.null(caption), filegraf, caption), WidthHTML=.html.env$WGraphHTML, file=file)   # R2HTML
    HTMLbr(x=2,file=file,append=TRUE) # R2HTML
    return(invisible(list(NumMarc=.html.env$NumMarc,title=title,file=file,menufile=menufile,NumGraph=.html.env$NumGraph)))
}


#  ## Ejemplo html2
#  
#  html2.init() # html2.init(css="R2HTML.css", logo="../RHtmlUdcLogo2.gif")
#  # html2.init(css="SciViews.css")
#  
#  html2.title()
#  res <- summary(x <- rnorm(100))
#  html2(res)
#  plot(x)
#  html2.graph()
#  html2.title()
#  hist(x)
#  html2.graph()
#  html2(t.test(x))
#  html2.title("Coidado con source xunto a html2()")
#  HTML.title("Empregar html2() despois de evaluar interactivamente")
#  HTML("Debería xerar o resultado anterior:")
#  t.test(x)
#  html2()
#  
#  #html2.png()
#  #hist(x)
#  #dev.off()
#  
#  html2.exit() # HTMLEndFile()
#  
#  ## END html2
------------ próxima parte ------------
## Ejemplo html2
source("R2HTML2.R")

html2.init() # Iniciar con los valores por defecto
# Alternativamente p.e. html2.init('Resultados', css="R2HTML.css", logo="../RHtmlUdcLogo2.gif")

html2.title() # Titulo por defecto
res <- summary(x <- rnorm(100))
html2(res) # Resultado con subtítulo por defecto
plot(x)
html2.graph() # Gráfico con subtítulo por defecto
# NOTA: actualmente guarda también una copia del gráfico en formato pdf en el subdirectorio del informe
html2.title('Análisis de x')
hist(x)
html2.graph('Histograma de x')
html2(t.test(x), 'Test-t de x')
html2.title("Cuidado con 'source' junto a 'html2()'")
HTML.title("Utilizar 'html2()' después de evaluar interactivamente")   # Compatible con 'R2HTML'
HTML("Debería generar el resultado anterior:")
t.test(x)
html2()

#html2.png()
#hist(x)
#dev.off()

html2.exit() # HTMLEndFile()

## END html2
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Ejemplo.zip
Type: application/x-compressed
Size: 304183 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140408/dc3ca901/attachment-0001.bin>


Más información sobre la lista de distribución R-help-es