[R] Unintended behaviour (possibly bugs)

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Feb 17 09:00:02 CET 2020


Hello,

To move to r-devel just send email to r-devel using r-project.org.
See

https://stat.ethz.ch/mailman/listinfo/r-devel

Rui Barradas

Às 04:59 de 17/02/20, Alexey Shipunov escreveu:
> My suggestion (shipunov::Dotchart1()) was:
> 
> ===
>     yinch <- if (!is.null(ylab)) 0.4 else 0
>     # inserted!
>      if (!(is.null(labels) && is.null(glabels))) {
>          nmai <- par("mai")
>          nmai.2.new <- nmai[4L] + max(yinch + linch + goffset, ginch) +
> 0.1 # changed!
>          if (nmai.2.new > nmai[2L]) {
>      # changed!
>              nmai[2L] <- nmai.2.new
>      # changed!
>          }
>          par(mai = nmai)
>      }
> ===
> 
> But I am not sure if this is the best way.
> 
> Now, how to move to r-devel? I never did it before.
> 
> Alexey
> 
> пн, 17 февр. 2020 г. в 13:54, Rui Barradas <ruipbarradas using sapo.pt>:
>>
>> Hello,
>>
>> Yes, this is definitely a bug.
>> Even the matrix plot is puzzling, with a "1" as top row sort-of-label
>> but no grid line. I'm trying to follow the source code of dotchart but
>> am yet to understand exactly what it does to decide the margins settings.
>>
>>       if (!(is.null(labels) && is.null(glabels))) {
>>         nmai <- par("mai")
>>         nmai[2L] <- nmai[4L] + max(linch + goffset, ginch) +
>>           0.1
>>         par(mai = nmai)
>>       }
>>
>> This should be moved to r-devel?
>>
>> Rui Barradas
>>
>> Às 03:33 de 17/02/20, Alexey Shipunov escreveu:
>>> John and Rui, thanks!
>>>
>>> However, if we use the proper object, the problem still persists:
>>>
>>> dotchart(c("3"=1, "2"=2, "1"=3), ylab="Ylab") # ylab is invisible
>>> dotchart(c("aa"=1, "b"=2, "cc"=3), ylab="Ylab") # ylab is partly visible (!!!)
>>> dotchart(c("aaa"=1, "bbb"=2, "ccc"=3), ylab="Ylab") # ylab is well visible
>>>
>>> If the object is matrix, ylab is visible:
>>>
>>> dotchart(matrix(1:3, dimnames=list(c("aa","bb","cc"), NULL)), ylab="Ylab")
>>>
>>> But the ?dotchart explicitly says that "x: either a vector or matrix
>>> of numeric values" and then "labels: a vector of labels for each
>>> point.  For vectors the default is to use ‘names(x)’ ...".
>>>
>>> So this is likely a bug. Do you agree?
>>>
>>> Alexey
>>>
>>> пн, 17 февр. 2020 г. в 01:55, Rui Barradas <ruipbarradas using sapo.pt>:
>>>>
>>>> Hello,
>>>>
>>>> I believe you are wrong, the error is not in dotchart, it's in your
>>>> code. You assume that to plot an object of class "table" is the same as
>>>> to plot an object of class "numeric".
>>>>
>>>> Inline.
>>>>
>>>> Às 12:21 de 16/02/20, Alexey Shipunov escreveu:
>>>>> Dear list,
>>>>>
>>>>> I have been advised to share these with R-help instead of filling the
>>>>> bug report:
>>>>>
>>>>> 1) dotchart() does not allow to see the left axis title ('ylab') and
>>>>> cannot change the left margin (outer margin 2) of the plot
>>>>>
>>>>> The code:
>>>>>
>>>>> aa <- table(c(1, 1, 1, 2, 2, 3))
>>>>> dotchart(aa, ylab="Ylab") # does not show 'ylab'
>>>>
>>>> You are right, it does *not* show 'ylab' but the user is warned.
>>>>
>>>>
>>>> aa <- table(c(1, 1, 1, 2, 2, 3))
>>>> dotchart(aa, ylab = "Ylab") # does show 'ylab'
>>>> #Warning message:
>>>> #In dotchart(aa, ylab = "Ylab") :
>>>> #  'x' is neither a vector nor a matrix: using as.numeric(x)
>>>>
>>>>
>>>> My code:
>>>>
>>>>
>>>> (mar <- par("mar"))    # new R session
>>>> #[1] 5.1 4.1 4.1 2.1   # the left margin is 4.1
>>>>
>>>> aa <- as.numeric(table(c(1, 1, 1, 2, 2, 3)))
>>>>
>>>> dotchart(aa, ylab = "Ylab") # It does show 'ylab'
>>>> old.par <- par(mar = mar + c(0, 5, 0, 0))
>>>> par("mar")
>>>> #[1] 5.1 9.1 4.1 2.1
>>>>
>>>> dotchart(aa, ylab = "Ylab")  # The left margin is now 9.1, much bigger
>>>>
>>>> par(old.par)                 # It does change the left margin
>>>> dotchart(aa, ylab = "Ylab")  #  but only when a new graph is plotted.
>>>>
>>>>
>>>>
>>>>> old.par <- par(mar=c(1, 10, 1, 1)) ; dotchart(aa, ylab="Ylab") ;
>>>>> par(old.par) # does not change left margin
>>>>>
>>>>> Possible solution:
>>>>>
>>>>> I researched the problem and think that the dotchart() code will need
>>>>> few corrections. If there is an interest, I can post it here; or you
>>>>> can look at the code of shipunov::Dotchart1() function.
>>>>>
>>>>> 2) example(hist) includes two "wrong" and "extreme" examples which
>>>>> slow down and even crash R on some systems; this make it unsuitable
>>>>> for demonstration in the class and strikes beginners in R who just
>>>>> want to understand how hist() works. Actually, I did it last week (I
>>>>> was not aware of these examples), and in the class two computers hang,
>>>>> and many others were extremely slow.
>>>>>
>>>>> The code:
>>>>>
>>>>> example(hist)
>>>>>
>>>>> Possible solution:
>>>>>
>>>>> If R maintainers will enclose parts of "hist" example in \dontrun{},
>>>>> this will allow to see the code but in the same time will not strike
>>>>> beginners in R who just
>>>>> want to understand how hist() works. They will still be possible to
>>>>> run with example(..., run.dontrun=TRUE).
>>>>
>>>> Agree, it's annoying. Sometimes there's a Warning section after the
>>>> Details section. Maybe such a section could get users' attention to
>>>> those examples? At least it wouldn't hurt...
>>>>
>>>>
>>>> Hope this helps,
>>>>
>>>> Rui Barradas
>>>>
>>>>>
>>>>> With best wishes,
>>>>>
>>>>> Alexey Shipunov
>>>>>
>>>>> ______________________________________________
>>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>>> 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.
>>>>>
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>>
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>



More information about the R-help mailing list