R 如何在执行函数时一步更改列名?

R 如何在执行函数时一步更改列名?,r,R,我有一个名为newBamAD的函数,当我对输入数据帧mydf运行该函数时,该函数会给出以下输出(见下文)。我想通过将列名bam.AD更改为新列名来存储newBamAD(mydf)的结果。例如,我想在同一步骤中将列名bam.AD更改为新名称,当我使用我的dataframe运行函数时,如下所示,output是否有矩阵或data.frame很重要。矩阵使用dimnames属性存储行名和列名,而data.frames使用names和row.names属性分别存储列名和行名 从您的问题来看,似乎在输出中有

我有一个名为
newBamAD
的函数,当我对输入数据帧
mydf
运行该函数时,该函数会给出以下
输出
(见下文)。我想通过将列名bam.AD更改为新列名来存储
newBamAD(mydf)
的结果。例如,我想在同一步骤中将列名
bam.AD
更改为新名称,当我使用我的dataframe运行函数时,如下所示,
output是否有矩阵或data.frame很重要。矩阵使用
dimnames
属性存储行名和列名,而data.frames使用
names
row.names
属性分别存储列名和行名

从您的问题来看,似乎在
输出中有一个矩阵,因为data.frames在打印时通常不引用字符元素(不管它们实际上是因子还是真正的字符向量),而矩阵会引用

因此,要更改列名,必须使用函数。(您也可以使用该函数,但这需要一个包含两个组件的列表RHS,一个用于行名称,另一个用于列名,因为您不想弄乱行名称,所以这没有帮助。)


如果要在函数调用的同一行中执行此操作,则必须调用
colnames
?names
?setNames
帮助(“名称”)
  output
       start           REF ALT bam.AD  
    1  "chr20:5363934" "C" "T" "59,29" 
    2  "chr5:8529759"  "G" "C" "28,41" 
    3  "chr14:9620689" "T" "G" "49,41" 
output


               start           REF ALT newname.AD  
            1  "chr20:5363934" "C" "T" "59,29" 
            2  "chr5:8529759"  "G" "C" "28,41" 
            3  "chr14:9620689" "T" "G" "49,41" 
mydf <- data.frame(); ## dummy
newBamAD <- function(mydf) matrix(c('chr20:5363934','chr5:8529759','chr14:9620689','C','G','T','T','C','G','59,29','28,41','49,41'),3,dimnames=list(1:3,c('start','REF','ALT','bam.AD')));
newBamAD(mydf);
##   start           REF ALT bam.AD
## 1 "chr20:5363934" "C" "T" "59,29"
## 2 "chr5:8529759"  "G" "C" "28,41"
## 3 "chr14:9620689" "T" "G" "49,41"
`colnames<-`(newBamAD(mydf),c('start','REF','ALT','newname.AD'));
##   start           REF ALT newname.AD
## 1 "chr20:5363934" "C" "T" "59,29"
## 2 "chr5:8529759"  "G" "C" "28,41"
## 3 "chr14:9620689" "T" "G" "49,41"
output <- newBamAD(mydf); colnames(output)[colnames(output)=='bam.AD'] <- 'newname.AD';
output;
##   start           REF ALT newname.AD
## 1 "chr20:5363934" "C" "T" "59,29"
## 2 "chr5:8529759"  "G" "C" "28,41"
## 3 "chr14:9620689" "T" "G" "49,41"
transform(newBamAD(mydf),newname.AD=bam.AD,bam.AD=NULL);
##           start REF ALT newname.AD
## 1 chr20:5363934   C   T      59,29
## 2  chr5:8529759   G   C      28,41
## 3 chr14:9620689   T   G      49,41