r - 您可以在 R 中使用 rename() 通过引用存储字符串的变量来重命名变量吗?
问题描述
我正在尝试编写一个函数,该函数采用数据框和字符串将数据框中的变量重命名为字符串。如果我有以下数据框df
和变量x
:
var1 var2
A 1 1
B 1 1
x = "new_var"
我想创建一个函数,它将数据框和字符串作为参数并返回以下数据框:
var1 new_var
A 1 1
B 1 1
我最初的想法是创建如下内容:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(x = var2)
return(new_df)
}
dplyr_f(df, x)
但这会返回:
var1 x
A 1 1
B 1 1
而不是将第二列命名为 new_var。
无论如何我可以让 rename() 使用变量的值,x
而不是认为我真的想重命名变量“x”?或者也许有更好的解决方案?
我会将输出通过管道传输到其他 dplyr 函数中,因此我正在寻找基于 dplyr 的解决方案。谢谢!
解决方案
您需要做的是使用bang bang
运算符,即!!
:
dplyr_f <- function(df, x){
new_df <- df %>%
rename(!!x := var2)
return(new_df)
}
dplyr_f(df, x)
var1 new_var
A 1 1
B 1 1
推荐阅读
- java - 从文本文件中读取用户名和密码并将它们与文本字段进行比较是行不通的,即使它们完全相同
- ios - locationManager.location 返回 nil
- node.js - 更新后的 npm 问题
- pgadmin-4 - 如何在 pgadmin 4 上使用 sql 选项卡
- html - 使用边框时伪元素不是完整的容器宽度
- mysql - 价格因月份而异的房产的数据库结构
- sqlite - asci hex 到 blob sql
- ios - 如何在 App Store 上私下上传应用程序?
- javascript - Firebase 检索返回未定义/对象对象
- r - dplyr:在每个组的末尾添加一个新行,根据前一行的变量计算