我已多次查看文档dplyr,它表明这dplyr::rename_all是一个"范围"变体dplyr::rename.有人能解释一下这对语法和功能有什么影响吗?为什么使用一个与另一个?该文档dplyr尚不清楚.
Moo*_*per 17
rename_all对所有名称应用函数rename给个别更换名称例如:
library(dplyr)
cars %>% rename_all(toupper) %>% head
# SPEED DIST
# 1 4 2
# 2 4 10
# 3 7 4
# 4 7 22
# 5 8 16
# 6 9 10
cars %>% rename_all(substr, 3) %>% head
# spe dis
# 1 4 2
# 2 4 10
# 3 7 4
# 4 7 22
# 5 8 16
# 6 9 10
cars %>% rename(speeeeeed = speed, distance = dist) %>% head
# speeeeeed distance
# 1 4 2
# 2 4 10
# 3 7 4
# 4 7 22
# 5 8 16
# 6 9 10
Run Code Online (Sandbox Code Playgroud)
除了已经提到的情况之外,rename_all当您为现有变量分配了一整套列名替换时,它会派上用场.
当你试图将该变量传递给时,就会遇到困难rename_all..funs无论是否有funs()dplyr帮助文件中提到的包装器,将变量直接传递给第二个参数都不起作用.变量名不是函数或表达式.这是一个象征.
.funs用funs()或quosure引用的单个表达式,命名函数的函数或函数.
new_car_names <- c("a", "b")
# Won't work.
cars %>% rename_all( new_car_names ) %>% head
cars %>% rename_all( funs( new_car_names ) ) %>% head
Run Code Online (Sandbox Code Playgroud)
以下是一些"使用funs()引用的单个表达式"的示例.
cars %>% rename_all( funs( c("a", "b")) ) %>% head
cars %>% rename_all( funs( c(new_car_names) ) ) %>% head
cars %>% rename_all( funs( ~new_car_names ) ) %>% head
cars %>% rename_all( funs( quo(new_car_names) ) ) %>% head
Run Code Online (Sandbox Code Playgroud)
这是一个"quosure中的单个表达式"的例子.
cars %>% rename_all( quo( quo(new_car_names) ) ) %>% head
Run Code Online (Sandbox Code Playgroud)
这是一个"函数"的例子(一个不使用它的参数).
cars %>% rename_all( function(.){new_car_names} ) %>% head
Run Code Online (Sandbox Code Playgroud)
最后,以"命名函数的字符串"为例.
test_function <- function(.){new_car_names}
cars %>% rename_all( "test_function" ) %>% head
Run Code Online (Sandbox Code Playgroud)
虽然这个问题没有提及rename_at,但这些例子告知了可能的用法.请注意,第二个参数rename_at,.vars,接受特征向量或位置编号来识别现有的列,你想重新命名.
cars %>% rename_at( .vars = "speed", function(.){new_car_names[[1]]} )
cars %>% rename_at( .vars = 1, function(.){new_car_names[[1]]} )
cars %>% rename_at( .vars = c(1,2), function(.){new_car_names} )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4612 次 |
| 最近记录: |