0

以下は、正常に動作する簡単な例です。

a = 1; b = 2; c = 3
d = 65; e = 66; f = 77
m1 = cbind(a, b, c); m2 = cbind(d, e, f); M = cbind(m1, m2)
colnames(M)
#   [1] "a" "b" "c" "d" "e" "f"

しかし、今度は時系列データでまったく同じことを試してください。

a = 1; b = 2; c = 3
d = 65; e = 66; f = 77
m1 = as.ts(cbind(a, b, c)); m2 = as.ts(cbind(d, e, f)); M = cbind(m1, m2)
colnames(M)
#   [1] "m1.a" "m1.b" "m1.c" "m2.d" "m2.e" "m2.f"'

時系列データのこれらのプレフィックスを回避するにはどうすればよいですか?
(つまり: 接頭辞m1.m2.)

PS:明らかに、 andをa, b, c, d, e, fバイパスして直接「cbind」コマンドを実行できることはわかっていますが、これらの中間段階の行列がループで必要です。m1m2

4

2 に答える 2

0

これを防ぐ方法はありませんcbind.ts。それを防ぐ通常の方法は setdeparse.level=0ですが、cbind.ts無視します。

R> stats:::cbind.ts
function (..., deparse.level = 1) 
{
    if (deparse.level != 1) 
        .NotYetUsed("deparse.level != 1")
    .cbind.ts(list(...), .makeNamesTs(...), dframe = FALSE, union = TRUE)
}
<bytecode: 0x35531f8>
<environment: namespace:stats>

いつでもcolnames自分で設定できますが、それらが「有効」(たとえば 経由make.names) であり、複製されていないことに注意してください。そうしないと、後で分析で問題が発生する可能性があります。

colnames(M) <- make.names(c(colnames(m1), colnames(m2)))
于 2015-03-27T10:24:54.920 に答える