Заменить значение NULL из списка в кадре данных R

У меня есть dataframe с полем как list(), но иногда он имеет нулевые значения, я пытался replace(is.null(.), 0) в моем запросе ничего не произошло.

я бы хотел:

  • заменить поезд на list(date=exactly date in the rows, sales=0)
  • отображение train.sales

вот мой фрейм данных: https://pasteboard.co/IsclvYT.png

содержимое внутри фрейма данных: https://pasteboard.co/IscmiwV.png

Спасибо...

1 ответ

As the 'train' is a list, we can loop through the list и заменить NULL элементы с 0

library(tidyverse)
df1 %>%
    mutate(train = map(train, ~ replace(.x, is.null(.x), 0)))

Based on the comments, the OP wanted to replace the NULL elements with the corresponding 'date' from 'test'

df1 %>%
   mutate(train = map2(train, test, ~ if(is.null(.x)) list(date = .y$date, sales = rep(0, length(.y$sales))) else .x))

Или используя base R

i1 <- sapply(df1$train, is.null)
df1$train[i1] <- 0
Другие вопросы по тегам