在跨函数的 .names 参数中使用函数
Using a function in .names argument of across function
在这个示例数据集中,我希望能够在第二个 mutate(across...
部分中操作 .names
参数:
特别是我想用 sub
.
这样的函数来操纵 {.col}
本质上:
我想删除最后两列中的 greater4
字符串:
Sepal.Length_greater4_greater50
和 Sepal.Width_greater4_greater50
到
Sepal.Length_greater50
和 Sepal.Width_greater50
示例数据:
library(dplyr)
head(iris, 5) %>%
select(1,2) %>%
mutate(across(contains("Sepal"), ~ifelse(. > 4, 1, 0), .names = "{.col}_greater4")) %>%
mutate(across(contains("4"), ~ifelse(. < 50, 1, 0), .names = "{.col}_greater50"))
Sepal.Length Sepal.Width Sepal.Length_greater4 Sepal.Width_greater4 Sepal.Length_greater4_greater50 Sepal.Width_greater4_greater50
1 5.1 3.5 1 0 1 1
2 4.9 3.0 1 0 1 1
3 4.7 3.2 1 0 1 1
4 4.6 3.1 1 0 1 1
5 5.0 3.6 1 0 1 1
在 {}
中使用 str_replace
library(stringr)
library(dplyr)
head(iris, 5) %>%
select(1,2) %>%
mutate(across(contains("Sepal"), ~ifelse(. > 4, 1, 0),
.names = "{.col}_greater4")) %>%
mutate(across(contains("4"), ~ifelse(. < 50, 1, 0),
.names = "{str_replace(.col, '_greater4', '_greater50')}"))
-输出
Sepal.Length Sepal.Width Sepal.Length_greater4 Sepal.Width_greater4 Sepal.Length_greater50 Sepal.Width_greater50
1 5.1 3.5 1 0 1 1
2 4.9 3.0 1 0 1 1
3 4.7 3.2 1 0 1 1
4 4.6 3.1 1 0 1 1
5 5.0 3.6 1 0 1 1
在这个示例数据集中,我希望能够在第二个 mutate(across...
部分中操作 .names
参数:
特别是我想用 sub
.
{.col}
本质上:
我想删除最后两列中的 greater4
字符串:
Sepal.Length_greater4_greater50
和 Sepal.Width_greater4_greater50
到
Sepal.Length_greater50
和 Sepal.Width_greater50
示例数据:
library(dplyr)
head(iris, 5) %>%
select(1,2) %>%
mutate(across(contains("Sepal"), ~ifelse(. > 4, 1, 0), .names = "{.col}_greater4")) %>%
mutate(across(contains("4"), ~ifelse(. < 50, 1, 0), .names = "{.col}_greater50"))
Sepal.Length Sepal.Width Sepal.Length_greater4 Sepal.Width_greater4 Sepal.Length_greater4_greater50 Sepal.Width_greater4_greater50
1 5.1 3.5 1 0 1 1
2 4.9 3.0 1 0 1 1
3 4.7 3.2 1 0 1 1
4 4.6 3.1 1 0 1 1
5 5.0 3.6 1 0 1 1
在 {}
str_replace
library(stringr)
library(dplyr)
head(iris, 5) %>%
select(1,2) %>%
mutate(across(contains("Sepal"), ~ifelse(. > 4, 1, 0),
.names = "{.col}_greater4")) %>%
mutate(across(contains("4"), ~ifelse(. < 50, 1, 0),
.names = "{str_replace(.col, '_greater4', '_greater50')}"))
-输出
Sepal.Length Sepal.Width Sepal.Length_greater4 Sepal.Width_greater4 Sepal.Length_greater50 Sepal.Width_greater50
1 5.1 3.5 1 0 1 1
2 4.9 3.0 1 0 1 1
3 4.7 3.2 1 0 1 1
4 4.6 3.1 1 0 1 1
5 5.0 3.6 1 0 1 1