[R] Unintended behaviour (possibly bugs)

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sun Feb 16 17:55:46 CET 2020


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.
>



More information about the R-help mailing list