After the helpful reply from Greg Snow (below), I've written a function
printtoscreen which does the screen wrapping I need (although not in a
very elegant way). This works fine for strings without any escape
characters in them, e.g.
printtoscreen=function(str) {
+ str2=strwrap(str,width=getOption("width"))
+ if (length(str2)>1)
{str2[2:length(str2)]=paste("\b\b",str2[2:length(str2)],sep="")} #to
remove the ", "s toString puts in
+ str2=paste(str2,"\n",sep="")
+ cat(str2)
+ }
getOption("width")
[1] 59
cat("Measured lengths are (",toString(1:20/100),") mm.\n")
Measured lengths are ( 0.01, 0.02, 0.03, 0.04, 0.05, 0.06,$
printtoscreen(paste("Measured lengths are (",toString(1:20/100),")
mm.\n",sep=""))
Measured lengths are (0.01, 0.02, 0.03, 0.04, 0.05, 0.06,
0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16,
0.17, 0.18, 0.19, 0.2) mm.
HOWEVER, if you use any escape characters in your string, it fails because
strwrap removes all of them:
cat("\n\tHello.\n")
Hello.
printtoscreen("\n\tHello.\n")
Hello.
Is there any way to prevent strwrap doing this? I haven't found any
options for this.
Thanks very much (and thanks to Greg Snow for the tip about strwrap before).
Toby Marthews
==============================================
Le Mer 11 juin 2008 18:00, Greg Snow a écrit :
You could try passing your character string to the strwrap function
first,
then use cat on the result.
--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
[EMAIL PROTECTED]
(801) 408-8111
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Toby Marthews Sent:
Wednesday, June 11, 2008 6:52 AM
To: r-help@r-project.org
Subject: [R] Word wrapping for character objects (WINDOWS R ONLY) Can
anybody help me with this problem? ** ONLY WINDOWS R - PROBLEM
DOESN'T OCCUR ON LINUX **
I want to print a long character to screen:
getOption("width")
[1] 60
z=(1:20)/10 #z is a vector of length between 20 and 30 (depending
on user options) containing lengths in mm (i.e. each element is 1-5
characters long)
str1=paste("The depths chosen are (",toString(z),") mm, and more text
...\n")
cat(str1)
The depths chosen are ( 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1,
1.1, 1.2, 1.3, 1.$
The problem is that on R for Windows the string is cropped by the
window size (hence the "$"). On R for Linux, this doesn't happen and the
text is "word wrapped" (the default for the shell, I guess):
cat(str1)
The depths chosen are ( 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1,
1.1, 1.2, 1.3,
1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2 ) mm, and more text ...
I can't find any option for "word wrapping" in the cat command
(fill=TRUE has no effect). I also checked the menu Edit -> GUI
preferences..., but there doesn't seem to be a "Word Wrap" option there
either.
How do I get word wrapping like this in Windows?
THANKS FOR ANY HELP!
Toby Marthews
Previous relevant posts:
- The post from 2006 about Screen Wrapping
(http://tolstoy.newcastle.edu.au/R/help/06/05/26673.html) which Brian
Ripley answered was about controlling how long vectors are cropped to the
screen. Unfortunately, the width option in options() does not
affect character objects, so I can't use that control here.
- I sent the same question to [EMAIL PROTECTED] in Oct 2007,
but noone there could help me with it.
- Try the following command on Windows R with a small window
(getOption("width")<117) and a large window (getOption("width")>117) and
you'll see you get extra nonexistent options in the menu:
a=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");menu(a)
I guess this is a related problem?
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.