将名称附加或粘贴到R中的列名称

Din*_*esh 6 r append columnname paste

我有一个包含400列的制表符分隔文件.现在我想将文本附加到列名称.如果列名是A和B,我希望它将A更改为A.ovca,将B更改为B.ctrls.Like聪明的我想与OVCA添加文本(OVCA和ctrls监视),以400 coulmns.Some列名和一些与ctrls.All列是独一无二的,包含了DELIM文件超过1000 rows.A示例代码下面给出:

         X             Y         Z               A       B               C  
        2.34          .89       1.4             .92     9.40            .82
        6.45          .04       2.55            .14     1.55            .04
        1.09          .91       4.19            .16     3.19            .56
        5.87          .70       3.47            .80     2.47            .90
Run Code Online (Sandbox Code Playgroud)

我希望文件看起来像:

       X.ovca     Y.ctrls      Z.ctrls       A.ovca     B.ctlrs       C.ovca  
        2.34          .89       1.4             .92     9.40            .82
        6.45          .04       2.55            .14     1.55            .04
        1.09          .91       4.19            .16     3.19            .56
        5.87          .70       3.47            .80     2.47            .90
Run Code Online (Sandbox Code Playgroud)

请帮帮我

问候Thileepan

Ari*_*man 6

如果调用了data.frame,则dat可以使用以下方式访问(并写入)列名colnames(dat).

因此:

cn <- colnames(dat)
cn <- sub("([AXC])","\\1.ovca",cn)
cn <- sub("([YZB])","\\1.ctrls",cn)
colnames(dat) <- cn

> cn
[1] "X.ovca"  "Y.ctrls" "Z.ctrls" "A.ovca"  "B.ctrls" "C.ovca" 
Run Code Online (Sandbox Code Playgroud)

\\1被称为正则表达式中回代.它将替换\\1模式中括号内的任何内容.由于在括号内你有一个括号,它将匹配里面的任何字母.在这种情况下,"A"变为"A.ovca","X"变为"X.ovca".

如果您的变量名称不止一个字母,那么很容易扩展; 只是看一下正则表达式.


Ram*_*ath 5

这是使用stringr包装的两个衬垫.

nam <- names(mydf)
names(mydf) <- ifelse(nam %in% c('X', 'A', 'Z'), 
   str_c(nam, '.ovca'),  str_c(nam, '.ctrls'))
Run Code Online (Sandbox Code Playgroud)