r - 将字符从列名的开头移动到列名的结尾(附加问题)
问题描述
我需要上一个问题/答案的额外解决方案 将字符从列名的开头移动到列名的结尾
我有一个数据集,其中列名有两部分除以_,例如
pal036a_lon
pal036a_lat
pal036a_elevation
我想将前缀转换为后缀,使其变为:
lon_pal036a
lat_pal036a
elevation_pal036a
上一个问题的答案
names(df) <- sub("([a-z])_([a-z]+)", "\\2_\\1", names(df))
不适用于前缀内的数字。
解决方案
假设你的名字有一个_
. 你也可以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="_"))