我有一个这样的数据框:
testData <-read.table(header = TRUE, text = "
id foo1_varA foo2_varA t1_varB t2_varB
'01' 'A' 'D' '1' '4'
'02' 'B' 'E' '2' '5'
'03' 'C' 'F' '3' '6'
")
我想通过颠倒“_”两侧文本的顺序来重命名列,从而得到列名:
id varA_foo1, varA_foo2, varB_t1, varB_t2
列数因源数据而异,因为它是 data.table CAST 操作的结果。
我可以用一个字符串做到这一点:
foo <- "AA_BB"
parts <- unlist(strsplit(foo, split='_'))
foo2 <- paste0(parts[2], "_", parts[1])
但我不知道如何用 colnames() 应用它。
如有任何帮助,我们将不胜感激!
最佳答案
你可以使用
names(df) <- gsub('(.*)_(.*)', '\\2_\\1', names(df))
这给出了,
names(df)
#[1] "id" "varA_foo1" "varA_foo2" "varB_t1" "varB_t2"
关于围绕分隔符反转数据框名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54024481/