Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
使用mutate_at(vars(contains(…)时如何引用gsub中的列)_R_Dplyr - Fatal编程技术网

使用mutate_at(vars(contains(…)时如何引用gsub中的列)

使用mutate_at(vars(contains(…)时如何引用gsub中的列),r,dplyr,R,Dplyr,我想从我知道列名包含特定字符串的列中删除所有空格 可复制示例 library(dplyr) df <- data.frame(x_first = c("How are you", "Hello", "Good bye"), x_second = c(1:3)) x_first x_second 1 How are you 1 2 Hello 2 3 Good bye

我想从我知道列名包含特定字符串的列中删除所有空格

可复制示例

library(dplyr)
df <- data.frame(x_first = c("How are you", "Hello", "Good bye"), x_second = c(1:3))

      x_first x_second
1 How are you        1
2       Hello        2
3    Good bye        3

df %>%
  mutate_at(vars(contains("first")), gsub(" ", "", vars(.))
最新版本的dplyr更喜欢使用新的cross函数,而不是mutate_at

df %>%
  mutate(across(contains("first"), ~gsub(" ", "", .)))
您可以使用~创建一个匿名函数,其中.将是该列中的数据

但同样的方法也适用于在

或者可以使用更长的函数语法

df %>%
  mutate_at(vars(contains("first")), function(x) gsub(" ", "", x))
最新版本的dplyr更喜欢使用新的cross函数,而不是mutate_at

df %>%
  mutate(across(contains("first"), ~gsub(" ", "", .)))
您可以使用~创建一个匿名函数,其中.将是该列中的数据

但同样的方法也适用于在

或者可以使用更长的函数语法

df %>%
  mutate_at(vars(contains("first")), function(x) gsub(" ", "", x))
我们可以从stringr中使用str_remove。最好使用regex模式\\s+-即一个或多个空格,以便在空格宽度不相等的情况下将其删除

library(dplyr)
library(stringr)
df %>%
      mutate(across(ends_with('first'), str_remove_all, "\\s+"))
-输出

#     x_first x_second
#1 Howareyou        1
#2     Hello        2
#3   Goodbye        3
我们可以从stringr中使用str_remove。最好使用regex模式\\s+-即一个或多个空格,以便在空格宽度不相等的情况下将其删除

library(dplyr)
library(stringr)
df %>%
      mutate(across(ends_with('first'), str_remove_all, "\\s+"))
-输出

#     x_first x_second
#1 Howareyou        1
#2     Hello        2
#3   Goodbye        3
你可以做df%>%mutateacrosscontainsfirst,~gsub,…你可以做df%>%mutateacrosscontainsfirst,~gsub。。