r - dplyr 改变管道函数中的列名
问题描述
我有以下代码:
library(dplyr)
df <- data %>%
left_join(., panel_info, by = "PANID") %>%
left_join(., prod_0106, by = "UPC") %>%
left_join(., prod_0106sz, by = "UPC") %>%
left_join(., trips, by = "PANID") %>%
mutate(colnames(.) = gsub(" ", "", colnames(.)))
除最后一行外,一切正常。df
数据框之前尚未创建。所以使用管道函数我试图将所有数据连接在一起,最后删除连接在一起的数据的列名中的所有空格。
但是,出现以下错误;
Error in mutate_impl(.data, dots) :
Column `gsub(" ", "", colnames(.))` must be length 20056 (the number of rows) or one, not 106
我认为这是由于代码(.)
的mutate()
一部分。只是想看看我哪里出错了。
解决方案
您还可以colnames
通过管道在 dplyr 管道中进行设置,`colnames<-()`
这是您执行此操作时调用的函数的通用形式colnames(df) <- c('a', 'b', 'c')
:
iris %>%
`colnames<-`(gsub('Length', 'LENGTH', names(.))) %>%
head
Sepal.LENGTH Sepal.Width Petal.LENGTH Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
推荐阅读
- vue.js - 如何在 Vue 2 中为输入设置动态 v-model 并为此 v-model 设置值
- angular - 使用 VPN 构建 Angular 项目
- jquery - jQuery调用延迟函数不起作用
- kubernetes - 如何正确设置 Kubernetes pod eviction 限制,以避免系统 OOM 杀手
- excel - 在今天修改文件的最快方法
- python - 在多处理期间共享大型任意数据结构
- r - 使用乳胶模板时,R markdown beamer 中未显示页码
- javascript - 在隐藏/显示所有具有类的元素的函数中单击时更改按钮内部文本
- mysql - 存储函数 - 格式化列数据的语法
- ios - 代码签名错误:配置文件 ***** 不包括签名证书 ****