我有一个这样的数据框:
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()中应用它。
任何帮助将不胜感激!
答案 0 :(得分:3)
您可以使用
names(df) <- gsub('(.*)_(.*)', '\\2_\\1', names(df))
给出,
names(df)
#[1] "id" "varA_foo1" "varA_foo2" "varB_t1" "varB_t2"