
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> ### Tests of structure() and deparsing.
> 
> ## deparsing has always treated some attributes specially (apparently
> ## to allow inter-operability with S).
> ## The mapping is
> ## as printed: "dim", "dimnames", "names", "tsp", "levels"
> ## deparsed: ".Dim", ".Dimnames", ".Names", ".Tsp", ".Label"
> ## structure() remaps to the printed form.
> 
> ## The remapping in deparse will be removed in R 4.2.0.
> 
> X <- matrix(1:4, 2, 2, dimnames=list(c("A", "B"), 1:2))
> names(attributes(X))
[1] "dim"      "dimnames"
> cat(deparse(X), "\n")
structure(1:4, dim = c(2L, 2L), dimnames = list(c("A", "B"),      c("1", "2"))) 
> Y <- structure(1:4, .Dim = c(2L, 2L),
+                .Dimnames = list(c("A", "B"), c("1", "2")))
> identical(X, Y)
[1] TRUE
> 
> z <- ts(1:10, frequency = 4, start = c(1959, 2))
> attributes(z)
$tsp
[1] 1959.25 1961.50    4.00

$class
[1] "ts"

> cat(deparse(z), "\n")
structure(1:10, tsp = c(1959.25, 1961.5, 4), class = "ts") 
> z2 <- structure(1:10, .Tsp = c(1959.25, 1961.5, 4), class = "ts")
> identical(z, z2)
[1] TRUE
> 
> ## levels <-> .Label is most relevant to factors, but is always remapped.
> x <- 1:3
> attr(x, "levels") <- letters[x]
> cat(deparse(x), "\n")
structure(1:3, levels = c("a", "b", "c")) 
> y <- structure(1:3, .Label = c("a", "b", "c"))
> identical(x, y)
[1] TRUE
> 
> 
> ## Factors were long deparsed with double (rather than integer codes).
> ## As from R 2.5.0 parsing such a deparse will given an error, so
> ## structure() coerces the codes to an integer vector.
> ## Example from an earlier version of Puromycin.R
> state <- structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+                      2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
+                    .Label = c("treated", "untreated"), class = "factor")
> typeof(state)
[1] "integer"
> storage.mode(state)
[1] "integer"
> attributes(state)
$levels
[1] "treated"   "untreated"

$class
[1] "factor"

> cat(deparse(state))
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), levels = c("treated",  "untreated"), class = "factor")> 
> state2 <- structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
+                       2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L),
+                     levels = c("treated", "untreated"), class = "factor")
> identical(state,state2)
[1] TRUE
> 
