Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Getting first element of the list in each row in a list-column

How can I get rid of the nested lists and only keep the first element of each list in ColumnB?

ColumnA ColumnB
first c(1, 2, 3)
second c(4, 5, 6)
third c(7, 8, 9)

It should look like this:

ColumnA ColumnB
first 1
second 4
third 7

In , I would try it with a lambda function giving me only the first element of the list.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

We can use map to loop over the list column and extract the first element

library(dplyr)
library(purrr)
df1 %>%
    mutate(ColumnB = map_dbl(ColumnB, first))

-output

# A tibble: 3 × 2
  ColumnA ColumnB
  <chr>     <dbl>
1 first         1
2 second        4
3 third         7

Or in base R use sapply to loop over the list and extract the first element

df1$ColumnB <- sapply(df1$ColumnB, `[`, 1)

data

df1 <- structure(list(ColumnA = c("first", "second", "third"), ColumnB = list(
    c(1, 2, 3), c(4, 5, 6), c(7, 8, 9))), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -3L))
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading