京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

【Rのジミ〜な小技シリーズ】変数で、データフレームに「任意の列名」を追加するTips

はじめに

pasteなどで連結して作成した文字列をもとにして、それらをデータフレームの列名にしたい。 そういうケースがよくあるのです。

食わず嫌い的に試して無かったけど、「えっ、これできるの?!」という感じなことが起こったようです・・・。 文字列の変数で、データフレームの列名を複数追加できることがわかったので、それをメモしておきます。 R歴 約10年、まだまだ奥が深い。

データフレームの列名を追加する

test <- data.frame(a=1:3, b=4:6, c="abc")
test
#  a b   c
#1 1 4 abc
#2 2 5 abc
#3 3 6 abc

#よくやる列追加のやり方
test$d <- 7:9
test
#  a b   c d
#1 1 4 abc 7
#2 2 5 abc 8
#3 3 6 abc 9

文字列の変数で、データフレームの列名を追加する

次に、文字列の変数で、データフレームの列名を追加してみます。

#任意の文字列を作成して、列名にする
col01 <- paste0("X", "01")
#[1] "X01"
  
test[,col01] <- NA
test
#  a b   c X01
#1 1 4 abc  NA
#2 2 5 abc  NA
#3 3 6 abc  NA

#複数の任意の文字列を作成して、列名にする
col02 <- paste0("X", c("02", "03", "04"))
col02
#[1] "X02" "X03" "X04"

test[,col02] <- NA
test
#  a b   c d X01 X02 X03 X04
#1 1 4 abc 7  NA  NA  NA  NA
#2 2 5 abc 8  NA  NA  NA  NA
#3 3 6 abc 9  NA  NA  NA  NA

上記の実行コードで、"X02" "X03" "X04"という列名が一気に追加されました。 なかなか秀逸と思います。