rr-glue

Glue as an object


I'd like to use the output of the glue function as an R object, but it only works as character.

Example: if I try this -

as.factor((
  str_glue("iris$`{colnames(iris[5])}`")
))

The result is this:

[1] iris$`Species`
Levels: iris$`Species`

But I want this:

as.factor(iris$`Species`)


[1] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    
 ...
[145] virginica  virginica  virginica  virginica  virginica  virginica 
Levels: setosa versicolor virginica

Solution

  • Use eval and parse or parse_expr:

    my_str <- str_glue("iris$`{colnames(iris[5])}`")   # glue object
    
    class(my_str)
    [1] "glue"      "character"
    
    eval(parse_expr(my_str)) %>% as.factor
    
    [1] setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa     setosa    
     ...
    [145] virginica  virginica  virginica  virginica  virginica  virginica 
    Levels: setosa versicolor virginica