Basil
Basil

Reputation: 1004

Converting a matrix within a dataframe to character columns/vectors in R

The code adds on a matrix to the dataframe showing words enclosed in asterisks from col1. How can I convert this matrix col2[,1] and col2[,2] into columns so it is just one dataframe?

library(stringr)
library(dplyr)

col1<-c("**sometimes** i code in python",
        "I like **walks** in the park",
        "I **often** do **exercise**")

df<- data.frame(col1, stringsAsFactors = FALSE)%>%
  mutate(col2 = str_extract_all(col1, "\\*\\*[^* ]+\\*\\*",simplify=TRUE))

Upvotes: 1

Views: 228

Answers (1)

shs
shs

Reputation: 3901

Turn the column into a data frame, then unnest()

library(stringr)
library(dplyr)
library(tidyr)

df %>%
  mutate_at("col2", as.data.frame) |> 
  unnest(col2)
#> # A tibble: 3 × 3
#>   col1                           V1            V2            
#>   <chr>                          <chr>         <chr>         
#> 1 **sometimes** i code in python **sometimes** ""            
#> 2 I like **walks** in the park   **walks**     ""            
#> 3 I **often** do **exercise**    **often**     "**exercise**"

Created on 2022-08-03 by the reprex package (v2.0.1)

Upvotes: 1

Related Questions