Rのrownames()
関数は、データフレームや行列(matrix)の行名(row names)を取得または設定するための関数。
基本的な使い方
行名を取得する
rownames(データフレームまたは行列)
例:
df <- data.frame(A=1:3, B=c("X", "Y" , "Z" ))
rownames(df) # 行名を取得
output
[1] "1" "2" "3"
※ デフォルトでは行名はインデックス(1, 2, 3, ...)が文字列として自動的に付けられる。
行名を設定する
rownames(データフレームまたは行列) <- 新しい行名ベクトル
例:
df <- data.frame(A=1:3, B=c("X", "Y" , "Z" ))
rownames(df) <- c("row1", "row2" , "row3" ) # 行名を指定
df
output
A B
row1 1 X
row2 2 Y
row3 3 Z
※ 行名ベクトルは、データフレームや行列の行数と一致する必要がある。
※ rownames()
を使って手動で行名をつけると、デフォルトの数値インデックスは上書きされる。
行名を削除する
rownames(データフレームまたは行列) <- NULL
例:
df <- data.frame(A = 1:3, B = c("X", "Y", "Z"))
rownames(df) <- c("row1", "row2", "row3") # 行名をつける
rownames(df) <- NULL # 行名を削除
df
output
A B
1 1 X
2 2 Y
3 3 Z
※ NULL
を指定すると、行名は自動的な数値インデックス(1, 2, 3, ...)に戻る。
row.names() との違い
rownames()
:行名を取得または設定するための便利な関数。row.names()
:rownames()
と同様に動作するけど、主にdata.frame()
の引数として使用されることが多い。
df <- data.frame(A=1:3, B=c("X", "Y" , "Z" ), row.names=c("row1", "row2" , "row3" ))
df
output
A B
row1 1 X
row2 2 Y
row3 3 Z
使用例いろいろ
行名を使ったデータのアクセス
行名を使って、特定の行を抽出する。
df <- data.frame(A=1:3, B=c("X", "Y" , "Z" ))
rownames(df) <- c("row1", "row2" , "row3" )
df["row2", ] # "row2" の行を抽出
output
A B
row2 2 Y
行名で条件検索
行名が特定の条件を満たす行を抽出する。
df <- data.frame(A=1:3, B=c("X", "Y" , "Z" ))
rownames(df) <- c("a", "b" , "c" ) # 行名が "b" に一致する行を取得
df[rownames(df)=="b" , ]
output
A B
row2 2 Y
まとめ
rownames()
の使い分けをまとめると、以下のような感じ。
操作 | 構文 | 効果 |
---|---|---|
行名の取得 | rownames(df) |
データフレームの行名を取得 |
行名の設定 | rownames(df) <- c("A", "B", "C") |
データフレームの行名を "A", "B", "C" に設定 |
行名の削除 | rownames(df) <- NULL |
データフレームの行名を削除して、デフォルトの数値インデックスに戻す |
注意点
- 行名は文字ベクトルとして管理される。数値ではなく、文字列のように扱われる。
- Rでは重複した行名も許容されるけれども、重複があるとアクセス時に注意が必要。できるだけ重複しない行名にする。
- 行名は、
NA
を含むことはできない。