r - 通过使用 dplyr 添加前缀重命名除 id 列之外的所有列
问题描述
我有一个列 id、feature_1、feature_2、feature_3 的数据框,如下所示。
df = data.frame(
id = sample(letters, 5),
feature_1 = sample(1:10, 5),
feature_2 = runif(5),
feature_3 = rnorm(5)
)
我想通过添加前缀来重命名所有特征列。以下行不起作用并输出错误。
df %>%
rename_with(~(ifelse(names(.x) == "id", paste0("source_", names(.x)), "id")))
Error in names[cols] <- .fn(names[cols], ...) :
replacement has length zero
关于如何修改它的任何提示?.x 在 rename_with 中代表什么?提前致谢!
解决方案
library(dplyr)
df %>%
dplyr::rename_with(~ paste0("source_", .), -id)
的第三个参数rename_with
是.cols
,您可以在其中使用tidyselect语法来选择列。此处-id
不包括此列。
根据评论,.
语法比编写匿名函数更简洁/更简单,但您可以等效地完成此操作:
df %>%
dplyr::rename_with(function(x) paste0("source_", x), -id)
推荐阅读
- javascript - 模板文字在 Chrome 上引发未捕获的语法错误
- google-chrome - 下载文件时获取文件 URL
- postgresql - 如何在 PostgreSQL 中通过 varchar 选择带有 case-when 开关的整理顺序进行排序
- c# - 无法选中 ASP.NET Core MVC 视图中的复选框
- reactjs - 将 React 组件实现为 html 字符串
- c# - 为什么我无法使用驱动程序连接字符串连接到 MySql .Net,因为它与 Delphi 的 TADOQuery 一起使用?
- python - python3:timedrotatingfilehandler 日志轮换问题与具有多个脚本的相同日志文件
- javascript - Vue 多个组件和访问 Vuex 属性
- qt - 在 QWidget 内部,如果我试图同时调整小部件的大小,则 Qwt 绘图应该调整大小。如何将 resizeevent 应用于 QWidget
- powershell - 如何比较数据集与 adcomputer 记录?