2013-08-28 14 views
12

データフレーム(動物園オブジェクト)を50回複製し、結果を行列として取得しようとしていますが、すべてのコマンドが失敗したようです。私はこれを行う関数を簡単に書くことができましたが、結果はrepを使って簡単に得られることを期待していました。データフレーム全体をn回複製する

はちょうどx 2回を複製してみましょう

x <- zoo(data.frame(A = c(1,2,3,4,5,6), B = c(7,8,9,10,11,12), C = c(13,14,15,16,17,18)), order.by = seq(as.Date("2012-01-01"), as.Date("2012-06-01"), by = "month")) 

#> x 
#   A B C 
#2012-01-01 1 7 13 
#2012-02-01 2 8 14 
#2012-03-01 3 9 15 
#2012-04-01 4 10 16 
#2012-05-01 5 11 17 
#2012-06-01 6 12 18 

例として、次のことを考えてみましょう。私が探しています最終的な結果は次のとおりです。

matrix(rep(x,2), ncol = 3, byrow = T) 

OR

matrix(rep(x,2), ncol = 3, byrow = F) 

OR

#  [,1] [,2] [,3] 
# [1,] 1 7 13 
# [2,] 2 8 14 
# [3,] 3 9 15 
# [4,] 4 10 16 
# [5,] 5 11 17 
# [6,] 6 12 18 
# [7,] 1 7 13 
# [8,] 2 8 14 
# [9,] 3 9 15 
#[10,] 4 10 16 
#[11,] 5 11 17 
#[12,] 6 12 18 

これは私がこれまで試してみましたものですが、これらの作品のどれも

matrix(rep(x, each = 2), ncol = 3) 

誰でも助けてくれますか?

は何replicateについて、

+1

(http://stackoverflow.com/questions/11693599/alternative-to-expand-grid-for-data-frames)[ここでJoranの答え@]を見てください – Henrik

答えて

12
coredata(x)[rep(seq(nrow(x)),50),] 
     A B C 
    [1,] 1 7 13 
    [2,] 2 8 14 
    [3,] 3 9 15 
    [4,] 4 10 16 
    [5,] 5 11 17 
    [6,] 6 12 18 
...snip... 
[295,] 1 7 13 
[296,] 2 8 14 
[297,] 3 9 15 
[298,] 4 10 16 
[299,] 5 11 17 
[300,] 6 12 18 
5

をいただき、ありがとうございますか!実際

do.call(rbind, replicate(5, as.matrix(x), simplify=FALSE)) 

、はるかに高速に(まだないほど速く受け入れ答えとして)私は忘れていた coredata()、を利用することだろう。

do.call(rbind, replicate(5, coredata(x), simplify = FALSE)) 
8
sapply(x, rep.int, times=3) 
#  A B C 
# [1,] 1 7 13 
# [2,] 2 8 14 
# [3,] 3 9 15 
# [4,] 4 10 16 
# [5,] 5 11 17 
# [6,] 6 12 18 
# [7,] 1 7 13 
# [8,] 2 8 14 
# [9,] 3 9 15 
# [10,] 4 10 16 
# [11,] 5 11 17 
# [12,] 6 12 18 
# [13,] 1 7 13 
# [14,] 2 8 14 
# [15,] 3 9 15 
# [16,] 4 10 16 
# [17,] 5 11 17 
# [18,] 6 12 18 
+0

'as.data.frame'も追加してください。 –

関連する問題