dplyr mutate cálculos de rowSums o funciones personalizadas

rowSums mutar una nueva variable del tipo de cálculo de filas, digamos rowSums como se muestra a continuación

 iris %>% mutate_(sumVar = iris %>% select(Sepal.Length:Petal.Width) %>% rowSums) 

el resultado es que “sumVar” se trunca a su primer valor (10.2):

 Source: local data frame [150 x 6] Groups:  Sepal.Length Sepal.Width Petal.Length Petal.Width Species sumVar 1 5.1 3.5 1.4 0.2 setosa 10.2 2 4.9 3.0 1.4 0.2 setosa 10.2 3 4.7 3.2 1.3 0.2 setosa 10.2 4 4.6 3.1 1.5 0.2 setosa 10.2 5 5.0 3.6 1.4 0.2 setosa 10.2 6 5.4 3.9 1.7 0.4 setosa 10.2 .. Warning message: Truncating vector to length 1 

¿Debería ser rowwise aplicado? O cuál es el verbo correcto para usar en este tipo de cálculos.

Editar:

Más específicamente, ¿hay alguna manera de realizar la función personalizada en línea con dplyr ?

Me pregunto si es posible hacer algo como:

 iris %>% mutate(sumVar = colsum_function(Sepal.Length:Petal.Width)) 

Esto es más una solución, pero podría ser utilizado

 iris %>% mutate(sumVar = rowSums(.[1:4])) 

Como está escrito en los comentarios, también puede usar un select dentro de mutate para obtener las columnas que desea resumir, por ejemplo

 iris %>% mutate(sumVar = rowSums(select(., contains("Sepal")))) %>% head 

o

 iris %>% mutate(sumVar = select(., contains("Sepal")) %>% rowSums()) %>% head 

Una forma más complicada sería:

  iris %>% select(Sepal.Length:Petal.Width) %>% mutate(sumVar = rowSums(.)) %>% left_join(iris) 

Agregar el comentario de @ docendodiscimus como una respuesta. +1 a él!

 iris %>% mutate(sumVar = rowSums(select(., contains("Sepal")))) 

Estoy usando esta solución simple, que es una modificación más robusta de la respuesta de Davide Passaretti:

 iris %>% select(Sepal.Length:Petal.Width) %>% transmute(sumVar = rowSums(.)) %>% bind_cols(iris, .) 

(Pero requiere una orden de fila definida, lo que debería estar bien, a menos que trabaje con conjuntos de datos remotos, tal vez …)