С map
мы l oop над столбцом 'stats', извлекаем второй столбец, первый элемент для создания 'new_col' в mutate
и unnest
элемент list
library(purrr)
library(dplyr)
library(tidyr)
df <- df %>%
mutate(new_col = map(stats, ~ .x[[2]][1])) %>%
unnest(c(new_col))
df
# A tibble: 2 x 4
# a b stats new_col
# <int> <int> <list> <int>
#1 1 6 <df[,2] [4 × 2]> 2
#2 2 7 <df[,2] [4 × 2]> 2
Если столбец character
, используйте map_chr
, если это double
, используйте map_dbl
или если мы не знаем тип, тогда просто используйте map
, чтобы вернуть list
столбец, а затем unnest
Или в base R
df$new_col <- sapply(df$stats, function(x) x[[2]][1])
данные
temp <- data.frame(a = 1:4, b = 2:5)
df <- tibble(a = 1:2, b = 6:7, stats = list(temp, temp))