Как перенести dataframe в list и не включать значение NA? Спасибо!
Есть датафрейм ori_df
library(tidyverse)
ori_df <- data.frame(category=c('a','b',NA),subcategory=c('w',NA,'Z'))
Код ниже может перенести ori_df в список fin_list, но результат будет включать NA
fin_list <- as.list(ori_df)
Как удалить значение NA в fin_list, желаемый результат, как показано ниже fin_list_wished?
fin_list_wished <- list(category=c('a','b'),subcategory=c('w','Z'))





Аналогично комментарию выше:
lapply(ori_df, function(x) x[!is.na(x)])
Та же идея, но с purrr:
library(purrr)
my_purrr_list <- map(as.list(my_df), discard, is.na)
my_purrr_list
#> $category
#> [1] "a" "b"
#>
#> $subcategory
#> [1] "w" "Z"
Или без map/apply:
library(tidyverse) # tidyr, dplyr
library(magrittr) # %$% pipe
my_dplyr_list <- my_df %>%
pivot_longer(everything()) %>% # columns must be the same type
filter(!is.na(value)) %$%
split(value, .$name)
my_dplyr_list
#> $category
#> [1] "a" "b"
#>
#> $subcategory
#> [1] "w" "Z"
Данные игрушки:
my_df <- data.frame(category = c('a', 'b', NA), subcategory = c('w', NA, 'Z'))
Created on 2024-07-19 with reprex v2.1.0
lapply(ori_df, \(x) x[!is.na(x)])илиlapply(ori_df, na.omit).