在定界符周围反转数据框名称?

时间:2019-01-03 14:41:35

标签: r dataframe

我有一个这样的数据框:

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()中应用它。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

您可以使用

names(df) <- gsub('(.*)_(.*)', '\\2_\\1', names(df))

给出,

names(df)
#[1] "id"        "varA_foo1" "varA_foo2" "varB_t1"   "varB_t2"