2011-08-29 8 views
5

Tengo un problema con el ancho de la salida del eco en sweave, tengo una lista con una gran cantidad de texto. El problema es que la respuesta de eco de R se ejecuta fuera de la página dentro del pdf. He intentado usarCómo controlar el ancho del eco usando Sweave

<<>>= 
options(width=40) 
@ 

pero esto no ha cambiado nada.

Un ejemplo: configure la lista (no se muestra en látex).

<<echo=FALSE>>= 
my_list <- list(example="Site location was fixed using a Silvia Navigator handheld GPS  in October 2003. Point of reference used was the station Bench Mark. If the bench mark location was remote from the site then the point of reference used was changed to the 0-1 metre gauge. Bench Mark location was then recorded as a separate entry in the Site History section [but not used as the site location].\r\nFor a Station location map and all digital photograph's of the station, river reach, and site details see H:\\hyd\\dat\\doc. For non digital photo's taken prior to October 2003 please see the relevant station file at Tumut office.") 
@ 

Y muestre el asiento de la lista.

<<>>= 
my_list 
@ 

¿Hay alguna manera de que puedo conseguir que esto funcione sin tener que romper la lista con cat declaraciones.

+1

me funciona perfectamente en un mac. ¿Puede proporcionar más detalles sobre su instalación y plataforma de látex? – Ramnath

+1

En un mac usando texshop 2.43. TeX versión 3.1415926 (TeX Live 2010). R 2.13.0. Se ejecuta en mi máquina pero el texto se ejecuta fuera de la página en el pdf. –

+0

¿Qué quiere decir "su máquina"? –

Respuesta

3

Puede usar capture.output() para capturar la representación impresa de la lista y luego usar writeLines() y strwrap() para mostrar esta salida, muy bien envuelta. Como capture.output() devuelve un vector de cadenas que contiene la representación impresa del objeto, podemos encadenar cada una de ellas a la pantalla/página pero envueltas usando strwrap(). La ventaja de este enfoque es que el resultado ve como si hubiera sido impreso por R. Aquí está la solución:

writeLines(strwrap(capture.output(my_list))) 

que produce:

$example 
[1] "Site location was fixed using a Silvia Navigator 
handheld GPS in October 2003. Point of reference used 
was the station Bench Mark. If the bench mark location 
was remote from the site then the point of reference used 
was changed to the 0-1 metre gauge. Bench Mark location 
was then recorded as a separate entry in the Site History 
section [but not used as the site location].\r\nFor a 
Station location map and all digital photograph's of the 
station, river reach, and site details see 
H:\\hyd\\dat\\doc. For non digital photo's taken prior 
to October 2003 please see the relevant station file at 
Tumut office." 
+0

Gracias Gavin, funciona un placer. –

1

Desde una publicación de 2010 para rhelp por Mark Schwartz:

cat(paste(strwrap(x, width = 70), collapse = "\\\\\n"), "\n") 
+0

Wow. ¿Eso fue hace 2 horas o 89 años en el futuro? ;-) – Andrie

+1

¿No sabías que Mark era un Señor del Tiempo? –

Cuestiones relacionadas