使用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。。