Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在一个函数中编写同一列的多个转换?_R_Dataframe_Stringr - Fatal编程技术网

R 如何在一个函数中编写同一列的多个转换?

R 如何在一个函数中编写同一列的多个转换?,r,dataframe,stringr,R,Dataframe,Stringr,我有一个数据帧: ID value 1 he following object is masked from ‘package:purrr’ 2 Attaching package: ‘magrittr’ 3 package ‘ggplot2’ was built under R version 3.6.2 4 Warning messages: 以下是转换列值的代码: df <- df %>% mutate(value =

我有一个数据帧:

ID       value
1      he following object is masked from ‘package:purrr’
2      Attaching package: ‘magrittr’
3      package ‘ggplot2’ was built under R version 3.6.2
4      Warning messages:
以下是转换列值的代码:

df <- df %>% 
  mutate(value = stringr::str_replace(value, '(^he following object)', '\\1'),
         value = stringr::str_replace(value, '(^Attaching package:)', '\\1'),
         value = stringr::str_replace(value, '(^package ‘ggplot2’)', '\\1'))
) %>%   
  group_by(ID, value) 

正如您所看到的,我对一列使用stringr::str_替换多次。我的实际数据要大得多(比如数百万行)。这只是一个子集示例。那么,我如何将这三次结合起来,一次使用这一功能呢?我想使用相同的函数和库(没有根本性的改变)

如果我正确理解了这个问题,使用管道操作符
|
将代码中的
str\u replace
替换为
str\u replace\u all
,可以避免在不同的行中多次调用
str\u replace

例如:

table_patterns%
mutate(value=str_replace_all(value,“(^he following object)|”(^Attaching package:)|(^package'ggplot2'),“\\1'))%>%
分组依据(ID、值)

谢谢,可以用str_start()函数实现吗?根据文档,是的,它看起来基本上执行了与您在这里尝试执行的相同的正则表达式。除了这个特定的用例之外,我还想给你一个通用的模式。你能展示一下str_start()的样子吗?
ID       value
1      he following object
2      Attaching package: 
3      package ‘ggplot2’
4      Warning messages:
table_patterns <- table %>% 
mutate(value = str_replace_all(value, "(^he following object)|(^Attaching package:)|(^package ‘ggplot2’)", '\\1')) %>%   
group_by(ID, value)