我有这样的数据框
> d <- data.frame(team.aaa=1:3, team.aab=4:6, team.aac=7:9)
> d
# team.aaa team.aab team.aac
#1 1 4 7
#2 2 5 8
和,期望的输出
d <- rename(d, c("team.aaa"="aaa_team", "team.aab"="aab_team", "team.aac"="aac_team"))
> d
# aaa_team aab_team aac_team
#1 1 4 7
#2 2 5 8
#3 3 6 9
我可以使用重命名字符串来执行此操作,但由于数据量巨大,因此希望使用搜索和替换选项 非常感谢提前
答案 0 :(得分:2)
根据OP的帖子中显示的示例,似乎.
之后的后缀部分应该是前缀而反之亦然。在这种情况下,我们可以使用sub
来捕获非.
后跟.
的字符,然后捕获其余字符((.*)
)并替换它相应的反向引用安排。
names(d) <- sub("([^.]+).(.*)", "\\2_\\1", names(d))
names(d)
#[1] "aaa_team" "aab_team" "aac_team"
或者另一种选择是将字符串拆分为.
,然后在撤消订单后将paste
拆分
sapply(strsplit(names(d), "[.]"), function(x) paste(rev(x), collapse="_"))
或者@jota在评论中提到,如果&#39;团队&#39;始终是第一个词,我们可以使用sub
sub("team\\.(.*)", "\\1_team", names(d))