Dplyr память взорвать в R - PullRequest
2 голосов
/ 15 апреля 2020

Итак, у меня есть набор данных размером 1,4 ГБ, и я пытаюсь изменить его, используя следующую функцию:

reshaped <- function(df){
  df %>%
    select(subject_num, concept_code) %>% 
    group_by(subject_num, concept_code) %>%
    count() %>% 
    spread(concept_code, n, fill=0)

  return(df)
}

df = read_rds('df.RDs') %>% 
         mutate(a=paste(a, b, sep="|"))
df <- reshaped(df)
write_rds(df, 'df_reshaped.RDs')

Я получаю: Error: cannot allocate vector of size 1205.6 GB. Во время отладки я обнаружил, что код застревает в операторе распространения внутри измененной функции. Я не вижу, как набор данных объемом 1,4 ГБ мог бы запросить 1205,6 ГБ памяти внутри кода dplyr, который я написал. Ничто в приведенном выше коде не похоже на дублирование этого набора данных примерно в 900 раз, поэтому я немного застрял здесь. Кто-нибудь может подсказать, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...