R: dplyr :: mutate em linha usando função que pega uma linha do quadro de dados e retorna um número inteiro

Estou tentando usar a instrução de alteração de pipe usando uma função personalizada. Eu parecia um pouco semelhanteSO post mas em vão. Digamos que eu tenha um quadro de dados como este (ondeblob é uma variável não relacionada à tarefa específica, mas faz parte de todos os dados):

df <- 
  data.frame(exclude=c('B','B','D'), 
             B=c(1,0,0), 
             C=c(3,4,9), 
             D=c(1,1,0), 
             blob=c('fd', 'fs', 'sa'), 
             stringsAsFactors = F)

Eu tenho uma função que usa os nomes de variáveis, então selecione alguns com base no valor noexclude coluna e p. calcula uma soma nas variáveis não especificadas emexclude (que é sempre um caractere único).

FUN <- function(df){
  sum(df[c('B', 'C', 'D')] [!names(df[c('B', 'C', 'D')]) %in% df['exclude']] )
}

Quando eu der uma única linha (linha 1) paraFUN Eu recebo a soma esperada deC eD (aqueles não mencionados porexclude), nomeadamente 4:

FUN(df[1,])

Como faço da mesma forma em um pipe com mutate (adicionando o resultado a uma variávels) Essas duas tentativas não funcionam:

df %>% mutate(s=FUN(.))
df %>% group_by(1:n()) %>% mutate(s=FUN(.))

ATUALIZAR Isso também não funciona conforme o esperado:

df %>% rowwise(.) %>% mutate(s=FUN(.))

Isso funciona de causa, mas não está dentro do mutate (e pipes) do dplyr:

df$s <- sapply(1:nrow(df), function(x) FUN(df[x,]))

questionAnswers(2)

yourAnswerToTheQuestion