[R] version plot problem

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Tue Jun 30 11:35:01 CEST 2020


>>>>> PIKAL Petr 
>>>>>     on Thu, 25 Jun 2020 14:45:09 +0000 writes:

    > Thanks. 
    > I try to spread R to some other people and I use 4.0.0 - version.string R
    > Under development (unstable) (2020-03-08 r77917) nickname       Unsuffered
    > Consequences  whereas they use R 3.6.3
    > version.string R version 3.6.3 (2020-02-29) nickname       Holding the
    > Windsock

    > With artificial data frame both behave with the same error
    > dat <- data.frame(a=letters[1:5], b=1:5)
    > dat$a <- as.character(dat$a)
    > plot(dat)
    > Error in plot.window(...) : need finite 'xlim' values
    > In addition: Warning messages:
    > 1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
    > 2: In min(x) : no non-missing arguments to min; returning Inf
    > 3: In max(x) : no non-missing arguments to max; returning -Inf

    > So far so good.

    > But with original data with **character** columns
    > dput(head(mok))
    > mok <- structure(list(a = c("Kalcinát A", "Kalcinát A", "Kalcinát A", 
    > "Kalcinát A", "Kalcinát A", "Kalcinát A"), b = c("TB", "TB", 
    > "TB", "TB", "TB", "TB"), c = c("6101B", "6101B", "6101B", "6101B", 
    > "6101B", "6101B"), d = structure(c(1590624000, 1590624000, 1590537600, 
    > 1590537600, 1590537600, 1590537600), class = c("POSIXct", "POSIXt"
    > ), tzone = "UTC"), e = structure(c(1590649200, 1590634800, 1590620400, 
    > 1590606000, 1590591600, 1590577200), class = c("POSIXct", "POSIXt"
    > ), tzone = "UTC"), f = structure(c(1590649200, 1590634800, 1590620400, 
    > 1590606000, 1590591600, 1590577200), class = c("POSIXct", "POSIXt"
    > ), tzone = "UTC"), g = c("BAROTOVÁ", "KRÁTKÁ", "KRÁTKÁ", "HOLASOVÁ", 
    > "HOLASOVÁ", "BAROTOVÁ"), h = c(239.4, 221, 190.3, 215.7, 241.4, 
    > 214.8), i = c(48.7, 55.6, 52.9, 50.1, 46.6, 54.4), j = c(94.2, 
    > 93, 92.4, 94.2, 96.3, 94.4), k = c(0.8, 1, 1, 0.8, 0.7, 0.8)), row.names =
    > c(NA, 
    > 6L), class = "data.frame")

    > PLOT WORKS in R 400 but not in R 363??????

    > plot(mok)

    > Why it works in R400??? How should I explain it?

(it's  "R 4.0.0" , here spaces are relevant I think)

Well, new versions of R  are always better than previous ones
(even though, yes, rarely sometimes bugs are introduced).

and you have heard that  R 4.0.0  came with *many* new features, right ?

In this case the long NEW FEATURES section in the
NEWS | NEWS.pdf | NEWS.html files contained the entry

    • data.matrix() now converts character columns to factors and from
      this to integers.

and this contains the answer to your question, as

  plot(mok)  |->  plot.data.frame(mok)  |->  pairs(data.matrix(mok))

and  data.matrix(mok) in R 3.6.3 gives 4 warnings and ends in a
character matrix.

--

And yes, the above new feature was related and made particularly
sense with the important user-visible  stringsAsFactors  change
in R 4.0.0; see also the corresponding R blog (by Kurt Hornik) :

  https://developer.r-project.org/Blog/public/2020/02/16/stringsasfactors/


Martin Maechler
R Core team  and  ETH Zurich



More information about the R-help mailing list