使用dplyr

时间:2017-03-30 02:08:59

标签: r dplyr

如何使用dplyr对同一个变量进行多次顺序操作,但是比下面的代码更优雅?

具体来说,我想删除对car_names =的多次调用,而不必嵌套任何函数。

     mtcars2 <- mtcars %>% mutate(car_names = row.names(.)) %>% 
        mutate(car_names=stri_extract_first_words(car_names)) %>% 
mutate(car_names=as.factor(car_names)

1 个答案:

答案 0 :(得分:0)

如果您想输入less而不是嵌套函数,可以使用mutate调用中的管道:

library(dplyr)
library(stringi)

# What you did
mtcars2 <- mtcars %>% 
  mutate(car_names = row.names(.)) %>% 
  mutate(car_names = stri_extract_first_words(car_names)) %>% 
  mutate(car_names = as.factor(car_names))

# Another way with less typing and no nesting       
mtcars3 <- mtcars %>% 
  mutate(car_names = rownames(.) %>% 
           stri_extract_first_words(.) %>% 
           as.factor(.))

identical(mtcars2, mtcars3)
[1] TRUE