df示例:
a = c("a_1", "b_1", "b_2", "b_3", "c_1")
b = c(1,2,3,4,5)
df = cbind.data.frame(a,b)
如何在dplyr管道中使用str_replace替换_之后(包括_)的所有文本?
以下内容无效:
df_1 = df %>% filter(b >= 1.5) %>% str_replace_all(df$a, "_*", "")
答案 0 :(得分:2)
您缺少.
,请改用_.*
。由于_*
匹配零个或多个下划线,因此注意*
是一个量词,用于指定直接前字符的数量;而_.*
匹配一个下划线,然后.*
之后的所有内容,因为.
匹配一个普通字符;
df %>% mutate(new_a = str_replace(a, '_.*', as.character(b)))
# a b new_a
#1 a_1 1 a1
#2 b_1 2 b2
#3 b_2 3 b3
#4 b_3 4 b4
#5 c_1 5 c5
或者如果您只是想删除结尾部分:
df %>% mutate(new_a = str_replace(a, '_.*', ''))
# a b new_a
#1 a_1 1 a
#2 b_1 2 b
#3 b_2 3 b
#4 b_3 4 b
#5 c_1 5 c