r - 在 select_ 中构造变量名

标签 r dplyr

我正在尝试编写一个函数,该函数将(部分)通过组合其源数据帧和现有变量名称来重命名变量。本质上,我想要:

df1 <- data.frame(a = 1, b = 2)

成为:
df1 %>%
  rename(df1_a = a)

#  df1_a b
#1     1 2

但我想以编程方式执行此操作,大致如下:
fun <- function(df, var) {
  outdf <- rename_(df, paste(df, var, sep = "_") = var)
  return(outdf)
}

这种公认的幼稚方法显然行不通,但我一直无法弄清楚。我确定答案就在 nse 中小插图( https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html ),但这似乎没有解决构造变量名称的问题。

最佳答案

不确定这是否是正确的 dplyr-esque 方式,但它会让你前进。

fun <- function(df, var) {
    x <- deparse(substitute(df))
    y <- deparse(substitute(var))
    rename_(df, .dots = with(df, setNames(as.list(y), paste(x, y, sep = "_"))))
}

fun(df1, a)
#   df1_a b
# 1     1 2

fun(df1, b)
#   a df1_b
# 1 1     2

关于r - 在 select_ 中构造变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027914/

相关文章:

requireNamespaceQuietStop 在自定义 summaryFunction 插入符号中导致错误

r - 如何计算由离散数据定义的曲面下的体积?

r - 我有一个字符向量,如 A、G、C、T。我想要使​​用 R 从向量中获得 A 的最长序列

r - dplyr group_by 动态列

r - 根据日期创建列

r - SMOTE算法及分类 : overrated prediction success

r - 如何在 R 中读取 .sav SPSS 文件?

r - 使用 ftransform 和来自折叠 R 包的 fgroup_by

r - 整洁的评估编程和 ggplot2

r - 计算自上次事件以来耗时