【发布时间】:2020-07-17 08:18:14
【问题描述】:
我注意到stringr::str_replace 和gsub 之间的行为不同。
样本数据:
dat <- structure(list(country_name = c("Burkina", "Burkina", "Burkina",
"Burkina", "Burkina", "Burkina"), region_name = c("BOUCLE DU MOUHOUN_NA",
"BOUCLE DU MOUHOUN_NA", "BOUCLE DU MOUHOUN_NA", "BOUCLE DU MOUHOUN_NA",
"BOUCLE DU MOUHOUN_NA", "BOUCLE DU MOUHOUN_NA"), lat = c("NA_NA",
"NA_NA", "NA_NA", "NA_NA", "NA_NA", "NA_NA"), lon = c("NA_NA",
"NA_NA", "NA_NA", "NA_NA", "NA_NA", "NA_NA"), farm_size_ha = c("3_NA",
"5.67_NA", "8_NA", "46_NA", "29.5_NA", "20_NA"), plot_number = c("4_NA_NA",
"5_NA_NA", "3_NA_NA", "3_NA_NA", "9_NA_NA", "5_NA_NA")), row.names = c(NA,
6L), class = "data.frame")
使用str_replace:
dat %>% mutate_all(~str_replace(., pattern = 'NA_|_NA', replacement = ''))
给予:
country_name region_name lat lon farm_size_ha plot_number
Burkina BOUCLE DU MOUHOUN NA NA 3 4_NA
Burkina BOUCLE DU MOUHOUN NA NA 5.67 5_NA
Burkina BOUCLE DU MOUHOUN NA NA 8 3_NA
Burkina BOUCLE DU MOUHOUN NA NA 46 3_NA
Burkina BOUCLE DU MOUHOUN NA NA 29.5 9_NA
Burkina BOUCLE DU MOUHOUN NA NA 20 5_NA
使用gsub:
dat %>% mutate_all(~gsub(pattern = 'NA_|_NA', replacement = '', .))
给出所需的输出:
country_name region_name lat lon farm_size_ha plot_number
Burkina BOUCLE DU MOUHOUN NA NA 3 4
Burkina BOUCLE DU MOUHOUN NA NA 5.67 5
Burkina BOUCLE DU MOUHOUN NA NA 8 3
Burkina BOUCLE DU MOUHOUN NA NA 46 3
Burkina BOUCLE DU MOUHOUN NA NA 29.5 9
Burkina BOUCLE DU MOUHOUN NA NA 20 5
你能解释一下为什么他们的行为不同吗?以及如何强制str_replace 表现得像gsub?
【问题讨论】:
-
使用
str_replace_all -
或者更好的是,使用
str_remove
标签: r str-replace gsub