16

次のようなデータフレームがあります。

> mydf
                   val1     val2
hsa-let-7a         2.139890 -0.03477569
hsa-let-7b         2.102590  0.04108795
hsa-let-7c         2.061705  0.02375882
hsa-let-7d         1.938950 -0.04364545
hsa-let-7e         1.889000 -0.10575235
hsa-let-7f         2.264296  0.08465690

3 列のうち、2 番目と 3 番目のみが名前であることに注意してください。私がやりたいことは、最初の列に名前を付けることです (さらに、2 番目と 3 番目の列の名前を変更します)。

しかし、なぜこのコマンドは失敗したのでしょうか?

colnames(mydf) <- c("COL1","VAL1","VAL2");

それを行う正しい方法は何ですか?

それは私に与えました:

Error in `colnames<-`(`*tmp*`, value = c("COL1", "VAL1", "VAL2" :
  'names' attribute [3] must be the same length as the vector [2]
4

3 に答える 3

25

次のように、行名をデータフレームに結合できます。

mydf <- cbind(rownames(mydf), mydf)
rownames(mydf) <- NULL
colnames(mydf) <- c("COL1","VAL1","VAL2")

または、1 つのステップで:

setNames(cbind(rownames(mydf), mydf, row.names = NULL), 
         c("COL1", "VAL1", "VAL2"))
#         COL1     VAL1        VAL2
# 1 hsa-let-7a 2.139890 -0.03477569
# 2 hsa-let-7b 2.102590  0.04108795
# 3 hsa-let-7c 2.061705  0.02375882
# 4 hsa-let-7d 1.938950 -0.04364545
# 5 hsa-let-7e 1.889000 -0.10575235
# 6 hsa-let-7f 2.264296  0.08465690
于 2013-04-16T07:19:49.003 に答える