Rev 84031 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
### 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))cat(deparse(X), "\n")Y <- structure(1:4, .Dim = c(2L, 2L),.Dimnames = list(c("A", "B"), c("1", "2")))identical(X, Y)z <- ts(1:10, frequency = 4, start = c(1959, 2))attributes(z)cat(deparse(z), "\n")z2 <- structure(1:10, .Tsp = c(1959.25, 1961.5, 4), class = "ts")identical(z, z2)## levels <-> .Label is most relevant to factors, but is always remapped.x <- 1:3attr(x, "levels") <- letters[x]cat(deparse(x), "\n")y <- structure(1:3, .Label = c("a", "b", "c"))identical(x, y)## 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.Rstate <- 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)storage.mode(state)attributes(state)cat(deparse(state))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)