このcbind
関数を使用して 2 つ以上の行列を結合すると、結果の行列は列名を継承します。この事実の簡単な例は次のとおりです。2 つの (2x2) 行列m1
とm2
. の列m1
はa
とb
です。の列m2
はc
とd
です。Icbind
m1
との場合、、 、m2
という名前の 4 つの列を持つ行列を取得します。a
b
c
d
> m1 <- matrix(1:10, ncol = 2)
> colnames(m1) <- letters[1:2]
> m2 <- matrix(11:20, ncol = 2)
> colnames(m2) <- letters[3:4]
>
> M <- cbind(m1, m2)
> M
a b c d
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
m1
ただし、行列とm2
に時系列データが含まれている場合、 a の後の結果の行列の命名規則が変更されることに気付きましたcbind
。
> m3 <- ts(m1)
> m4 <- ts(m2)
> M2 <- cbind(m3, m4)
> M2
Time Series:
Start = 1
End = 5
Frequency = 1
m3.a m3.b m4.c m4.d
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
ご覧のとおり、の列名には、M2
最初に属していた行列の名前がプレフィックスとして付けられています。これが私の問題です。マトリックスを時系列形式で保持したいのですが、新しい命名規則は避けてください。のドキュメントを読んでいるうちにcbind
、次のような議論が見つかりましたdeparse.level
が、何の役にも立ちませんでした。
M2 <- cbind(m3, m4, deparse.level = 0)
M2
もちろん、簡単な回避策は、元の行列の列名を組み合わせた文字ベクトルを作成し、それを使用して新しい行列の列に名前を付けることです。しかし、それについて何かできるかどうか知りたいと思っていました。
> column_names <- c(colnames(m3), colnames(m4))
> colnames(M2) <- column_names
> M2
Time Series:
Start = 1
End = 5
Frequency = 1
a b c d
1 1 6 11 16
2 2 7 12 17
3 3 8 13 18
4 4 9 14 19
5 5 10 15 20
よろしくお願いいたします。