R: group_by не группирует при использовании собственной функции - PullRequest
0 голосов
/ 19 декабря 2018

Я уже некоторое время работаю с magrittr и dplyr и люблю конвейеры.Однако в моем текущем скрипте функция group_by не группируется, когда я использую ее для своих собственных функций:

Фрейм данных выглядит примерно так, только больше:

df <- data.frame(Participant = c(rep("A",10), rep("B", 10)), Speech = c(1,1,1,1,0,1,1,0,0,1,1,1,0,0,0,1,1,1,1,0))

У меня естьнесколько функций, которые мне нужны для очистки этих данных, и я обнаружил, что большинство моих функций не группируются по участникам, а используют весь фрейм данных.Одной из этих функций является следующее:

segment_finder <- function(kolin){
  kolom <- kolin %>% pull(Speech)
  part <- kolin %>% pull(Participant) %>% as.character() %>% first()
  vorige <- NA
  leng <- 0
  out <- data.frame(segment = numeric(), lengte = numeric())

  for (m in kolom){  
    if(is.na(vorige)){
      vorige <- m
      leng %<>% +1
    }
    else if(m != vorige) {  
      out %<>% bind_rows(data.frame(segment = vorige, lengte = leng))
      leng <- 1
      vorige <- m
    }
    else {      
      leng %<>% + 1
    }
  }
  out %<>% bind_rows(data.frame(segment = m, lengte = leng))
  out %<>% mutate(Participant = part)
  return(out)
}

Использование следующего кода работает, поэтому я нашел способ обойти это, но он продолжает меня беспокоить, что конвейер этого не делает.Я попытался загрузить последний dplyr, но это не работает.

df3 <- df %>% plyr::ddply("Participant", segment_finder)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...