Search code examples
rtidyverse

Manipulating character vectors: removing and adding quotes, adding strings


I have vector_1, which I want to manipulate with code so that vector_2 and vector_3 are generated automatically.

# What I have
> vector_1 <- c("Group_A", "Group_B", "Group_C", "Group_D")
> vector_1
[1] "Group_A" "Group_B" "Group_C" "Group_D"

I want to achieve the following:

# What I want to achieve by manipulating vector_1: 
vector_2 = c("Group_A, Group_B, Group_C, Group_D")
vector_3 = c(" ", "Group_A" = 3, "Group_B" = 3, "Group_C" = 3, "Group_D" = 3))

I assume noquote() is a starting point, but then I get stuck.

> vector_x <- noquote(vector_1)
> vector_x
[1] Group_A Group_B Group_C Group_D
# Here I'm stuck...

Base R would do, but I prefer to work in the tidyverse, with or without pipes.

--- Edit ---

Following up Sotos' question in the comments:

I want to use vector_3 as a header in kableExtra. Instead of writing...

kbl(
[hidden code] %>%
add_header_above(c(" ", "Group_A"=3, "Group_B"=3, "Group_C"=3, "Group_D"=3)) %>%
[more_code]
)

I haven't been able to make a reproducible example that works outside of PDF. Here's a link to add_header_above():

https://www.rdocumentation.org/packages/kableExtra/versions/1.3.4/topics/add_header_above


Solution

  • You can use toString for vector_2, and setNames for vector_3:

    toString(vector_1)
    # [1] "Group_A, Group_B, Group_C, Group_D"
    
    c(" ", setNames(rep(3, 4), vector_1))
    #        Group_A Group_B Group_C Group_D 
    #    " "     "3"     "3"     "3"     "3"