mutate_at&vars:我可以告诉r / dplyr覆盖现有功能,而不是创建新功能吗?

时间:2018-11-02 18:16:20

标签: r dplyr

[如果对反馈意见不满意,那么我可以尝试更新此帖子。]

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\bash.exe"

新的数据框processing_mtcars具有新功能,我希望功能名称与example_mtcars完全相同,但要应用转换。

library(tidyverse)
example_mtcars <- mtcars %>% mutate_at(vars(disp, wt, qsec), funs(as.character(.)))
example_mtcars$disp[c(2,4,8)] <- "NULL"
example_mtcars$wt[c(10, 12)] <- "NULL"
example_mtcars$qsec[c(2,3,4)] <- "NULL"

processed_mtcars <- example_mtcars %>% 
  mutate_at(vars(c(disp, wt:qsec)),
            funs(str_replace(., "NULL", "0"),
                 as.numeric))

例如,funs的第二个功能是as.numeric。但是,它引用的是原始的,未转换的功能,而不是“ NULL”刚刚被“ 0”替换的功能。因此,存在多个NA值。

1 个答案:

答案 0 :(得分:2)

也许您所追求的是以下之一:

example_mtcars %>% 
  mutate_at(
    vars(c(disp, wt:qsec)),
    funs(str_replace(., "NULL", "0") %>% as.numeric)
  ) 

或者这个:

example_mtcars %>% 
  mutate_at(
    vars(c(disp, wt:qsec)),
    funs(str_replace(., "NULL", NA_character_) %>% as.numeric)
  )