Specification of the ‘tiny_labelled’ class

library(tinylabels)

Setting a variable label

x <- 1:4
variable_label(x) <- "A variable label"

Extracting and replacing parts of an object

If elements of a vector are extracted, the new vector retains label and class tiny_labelled.

x[1:2]
#> Variable label     : A variable label
#> [1] 1 2
str(x)
#>  'tiny_labelled' int [1:4] 1 2 3 4
#>  - attr(*, "label")= chr "A variable label"
x[1:2] <- 5:6
str(x)
#>  'tiny_labelled' int [1:4] 5 6 3 4
#>  - attr(*, "label")= chr "A variable label"

Using double brackets removes label and class tiny_labelled, similar to how names are handled:

x[[1]]
#> [1] 5

It is still possible top keep variable label and class by setting keep_label = TRUE:

x[[1, keep_label = TRUE]]
#> Variable label     : A variable label
#> [1] 5

Math, Ops, Summary, Complex

If a vector is modified (e.g., via mathematical operations), label and tiny_labelled class are removed.

str(exp(x))
#>  num [1:4] 148.4 403.4 20.1 54.6
str(x + 1)
#>  num [1:4] 6 7 4 5
str(min(x))
#>  int 3
str(Re(x))
#>  num [1:4] 5 6 3 4

Coercion

Vectors of class tiny_labelled keep label and class if they are modified via as.character(), as.numeric(), etc.

as.character(x)
#> Variable label     : A variable label
#> [1] "5" "6" "3" "4"

If keep_label = FALSE, label and class are removed.

as.character(x, keep_label = FALSE)
#> [1] "5" "6" "3" "4"

as() methods are always strict, i.e. label and class are removed:

as(x, "character")
#> [1] "5" "6" "3" "4"

Data-frame methods

It is possible to assign multiple labels to the columns of a data frame by passing a named list or a named vector of key-value pairs. Note that mixing different types of labels (e.g. character and expression labels) is only possible if the right-hand side is a list.

variable_label(npk) <- c(
  N = "Nitrogen"
  , P = "Phosphate"
)
variable_label(npk) <- list(
  yield = expression(bar(Yield))
)
variable_label(npk)
#> $block
#> NULL
#> 
#> $N
#> [1] "Nitrogen"
#> 
#> $P
#> [1] "Phosphate"
#> 
#> $K
#> NULL
#> 
#> $yield
#> expression(bar(Yield))