Re: [Rd] Print bug for matrix(list(NA_complex_, ...))

From: William Dunlap <wdunlap_at_tibco.com>
Date: Wed, 03 Jun 2009 08:58:15 -0700

> -----Original Message-----
> From: r-devel-bounces@r-project.org
> [mailto:r-devel-bounces_at_r-project.org] On Behalf Of Martin Maechler
> Sent: Wednesday, June 03, 2009 2:37 AM
> To: Wacek Kusnierczyk
> Cc: r-devel_at_r-project.org
> Subject: Re: [Rd] Print bug for matrix(list(NA_complex_, ...))
>
> >>>>> "vQ" == Wacek Kusnierczyk
> <Waclaw.Marcin.Kusnierczyk_at_idi.ntnu.no>
> >>>>> on Wed, 03 Jun 2009 10:43:25 +0200 writes:
>
> vQ> Stavros Macrakis wrote:
> >> In R 2.8.0 on Windows (tested both under ESS and under
> R Console in case
> >> there was an I/O issue)
> >>
> >> There is a bug in printing val <-
> matrix(list(NA_complex_,NA_complex_),1).

> >>
> >>
> >>> dput(val)
> >>>
> >> structure(list(NA_complex_, NA_complex_), .Dim = 1:2)
> >>
> >>
> >>> print(val)
> >>>
> >>
> >> [,1]
> >>
> >> [1,]
> >>
> >>
> >> [,2]
> >>
> >> [1,]
> >>
> >>
> >> Note that a large number of spaces are printed instead of NA.
>
> vQ> on ubuntu 8.04 with r 2.10.0 r48703 there is almost
> no problem (still
> vQ> some unnecessary spaces):
>
> vQ> [,1] [,2]
> vQ> [1,] NA NA
>
> thank you, Waclav.
>
> I don't see any unnecessary space (or other CPU problems),
> using another Linux variant (RHEL 5)
> in the three R version
> 2.9.0 ,
> 2.9.0-patched (r48700)
> 2.10.0-devel (r48700)
>
> Can other Windows (or ...) users confirm problems in R 2.9.0
> (or newer) ?

I just tried it on 2.9.0 on the Windows GUI (RGui.exe) and saw similar problems. When printing to the command window, with either print(val) or show(val) it took a very long time and put $'s at the ends of the lines (indicating that there was text beyond the edge of the window). I used sink() to put the output into a file and then print() and show() acted quickly. The resulting file had 119 character lines, consisting mainly of trailing blanks:

> readLines("c:/temp/val.txt") # output of print(val);show(val);str(val)
 [1] " [,1]
"
 [2] "[1,]
"
 [3] " [,2]
"
 [4] "[1,]
"
 [5] " [,1]
"
 [6] "[1,]
"
 [7] " [,2]
"
 [8] "[1,]
"
 [9] "List of 2"

[10] " $ : cplx NA"

[11] " $ : cplx NA"

[12] " - attr(*, \"dim\")= int [1:2] 1 2"

> nchar(readLines("c:/temp/val.txt"))

 [1] 119 119 119 119 119 119 119 119 9 12 12 32

On Linux, using yesterday's 2.9.0, valgrind shows lots of 'depends on uninitialized value' problems that could explain the Linux-Windows difference in behavior:

> val<-matrix(list(NA_complex_,NA_complex_),1)
> val

==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6F7E2F: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6F7E44: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6F7E4C: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6FA87A: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6F86E8: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x6F86FA: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x711183: _IO_padn (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6F8713: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
==24859==
==24859== Conditional jump or move depends on uninitialised value(s)
==24859==    at 0x7111BF: _IO_padn (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6F8713: vfprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x7177A5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x6FF4E1: snprintf (in /lib/tls/libc-2.3.4.so)
==24859==    by 0x809DDC1: Rf_EncodeReal (printutils.c:179)
==24859==    by 0x8099AA9: Rf_PrintValueRec (print.c:359)
==24859==    by 0x809A124: Rf_PrintValueEnv (print.c:956)
==24859==    by 0x80584CA: Rf_ReplIteration (main.c:261)
==24859==    by 0x8058572: R_ReplConsole (main.c:306)
==24859==    by 0x8058BB8: run_Rmainloop (main.c:967)
==24859==    by 0x8056A70: main (Rmain.c:33)
Bill Dunlap
TIBCO Software Inc - Spotfire Division
wdunlap tibco.com

>
> Regards,
> Martin Maechler
>
> >> Compare the
> >> unproblematic real case:
> >>
> >> print(structure(list(NA_real_, NA_real_), .Dim = 1:2))
> >> [,1] [,2]
> >> [1,] NA NA
> >>
> >> Also, when printed in the read-eval-print loop,
> printing takes a very very
> >> long time:
> >>
> >>
> >>> proc.time(); matrix(list(NA_complex_,NA_complex_),1);
> proc.time()
> >>>
> >> user system elapsed
> >> 74.35 0.09 329.45
> >>
> >> [,1]
> >>
> >> [1,]
> >>
> >>
> >> [,2]
> >>
> >> [1,]
> >>
> >> user system elapsed
> >> 92.63 0.15 347.86
> >>
> >> 18 seconds runtime!
> >>
>
> vQ> user system elapsed
> vQ> 0.648 0.056 155.843
> vQ> [,1] [,2]
> vQ> [1,] NA NA
> vQ> user system elapsed
> vQ> 0.648 0.056 155.843
>
> vQ> vQ
>
> vQ> ______________________________________________
> vQ> R-devel_at_r-project.org mailing list
> vQ> https://stat.ethz.ch/mailman/listinfo/r-devel
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 03 Jun 2009 - 16:09:09 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 03 Jun 2009 - 19:34:35 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive