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