r - 如何重命名重复名称的第一个(或 n 个)名称?
问题描述
我的data.frame
:
data <- structure(list(X1 = c(59.8762607388198, 67.1632845699787, 23.6637377925217,
69.9449949897826, 35.2058596163988, 38.1956151127815), X2 = c(62.1132328920066,
21.8021914549172, 61.9988731481135, 34.3215084075928, 80.3957843966782,
60.5674904584885), X3 = c(88.2267396338284, 59.4003888778389,
73.828971683979, 66.0273016430438, 23.343755248934, 36.3777917064726
), X4 = c(48.4459692239761, 40.9731803461909, 99.6187647990882,
36.7934556119144, 59.0364990569651, 75.4534260369837), X5 = c(73.2776108942926,
97.464852463454, 95.126473121345, 52.8497830219567, 60.7845875620842,
65.9690665081143), X6 = c(38.557508662343, 87.049773093313, 74.7623572312295,
77.6170065626502, 98.8315769098699, 91.4291994087398), clusters = c(1L,
3L, 2L, 3L, 2L, 1L), group = structure(c(3L, 3L, 2L, 3L, 2L,
2L), .Label = c("1", "2", "3"), class = "factor"), clusters = structure(c(3L,
3L, 2L, 3L, 2L, 2L), .Label = c("cluster_1", "cluster_2", "cluster_3"
), class = "factor")), .Names = c("X1", "X2", "X3", "X4", "X5",
"X6", "clusters", "group", "clusters"), row.names = c(NA, 6L), class = "data.frame")
names(data)
[1] "X1" "X2" "X3" "X4" "X5" "X6" "clusters" "group"
[9] "clusters"
data
包含两列称为clusters
. 如何分别重命名它们?
grep
函数同时重命名:
names(data)[grep(pattern = 'clus', ignore.case = TRUE, x = colnames(data))] <- 'cluster_1'
[1] "X1" "X2" "X3" "X4" "X5" "X6" "cluster_1" "group"
[9] "cluster_1"
解决方案
一个更简单的选择是将make.unique
重复的列名称更改为unique
名称
names(data) <- make.unique(names(data))
推荐阅读
- javascript - 更新 .babelrc 以将 JavaScript 文件路径添加到 Transpile
- python - 无法安装烧瓶-mongoengine
- java - 如何在 Java 中使用 Graphics2D 绘制图像的一部分
- node.js - 收到来自 Stripe 的带有授权码的响应后出现 NavigationDuplicated 错误
- jquery-select2 - 添加多个时 Select2 Ajax 中断(堆栈 Rails 模板问题,已解决)
- python - 检测自引用省略号 [...] 并用字符串替换
- ruby-on-rails - 如何以这种形式删除数组
- terraform - 连接到 EC2 实例时的 Terraform 超时
- perl - Perl - 乘十进制
- angular - 在 Angular 中修改一个类以获取基于另一个属性的新属性