首页 > 解决方案 > 将字符从列名的开头移动到列名的结尾(附加问题)

问题描述

我需要上一个问题/答案的额外解决方案 将字符从列名的开头移动到列名的结尾

我有一个数据集,其中列名有两部分除以_,例如

pal036a_lon 
pal036a_lat 
pal036a_elevation

我想将前缀转换为后缀,使其变为:

lon_pal036a 
lat_pal036a 
elevation_pal036a

上一个问题的答案

names(df) <- sub("([a-z])_([a-z]+)", "\\2_\\1", names(df))

不适用于前缀内的数字。

标签: rregex

解决方案


假设你的名字有一个_. 你可以strsplit()

sapply(strsplit(names(df), '_'), function(x) paste(rev(x), collapse = '_'))

如果您有多个,则可以按照 jay.sf 的建议修改上述内容:

sapply(strsplit(x, "_"), function(x) paste(c(x[length(x)], x[-length(x)]), collapse="_"))

推荐阅读