2013-01-03 28 views
5

Giả sử chúng ta có một khung dữ liệu hoặc ma trận với một cột chỉ định giá trị số nguyên N như dưới đây (col 5). Có cách tiếp cận véc-tơ để phục hồi đối tượng sao cho mỗi hàng được sao chép N lần không?Phương pháp sao chép các hàng R

> y 
      [,1]  [,2]  [,3]  [,4] [,5] 
[1,] -0.02738267 0.5170621 -0.01644855 0.48830663 1 
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2 
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3 
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4 

Kết quả sẽ như sau.

[1,] -0.02738267 0.5170621 -0.01644855 0.48830663 1 
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2  
[2,] -0.30076544 1.8136359 0.02319640 -1.59649330 2 
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3 
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3 
[3,] 1.73447245 0.4043638 -0.29112385 -0.25102988 3 
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4 
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4 
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4 
[4,] 0.01025271 -0.4908636 0.80857300 0.08137033 4 

Một câu hỏi khác là cách jitter các hàng mới được tạo, sao cho không trùng lặp tính toán dữ liệu vừa được sao chép.

Trả lời

7

Một số dữ liệu làm-up:

y <- cbind(matrix(runif(16), 4, 4), 1:4) 

Chỉ cần làm:

z <- y[rep(seq_len(nrow(y)), y[,5]), ] 
#   [,1]  [,2]  [,3]  [,4] [,5] 
# [1,] 0.5256007 0.07467979 0.95189484 0.2887943 1 
# [2,] 0.3083967 0.03518523 0.08380005 0.9168161 2 
# [3,] 0.3083967 0.03518523 0.08380005 0.9168161 2 
# [4,] 0.8549639 0.79452728 0.22483537 0.4452553 3 
# [5,] 0.8549639 0.79452728 0.22483537 0.4452553 3 
# [6,] 0.8549639 0.79452728 0.22483537 0.4452553 3 
# [7,] 0.5453508 0.47633523 0.51522514 0.3936340 4 
# [8,] 0.5453508 0.47633523 0.51522514 0.3936340 4 
# [9,] 0.5453508 0.47633523 0.51522514 0.3936340 4 
# [10,] 0.5453508 0.47633523 0.51522514 0.3936340 4 

Và tôi không chắc chắn những gì bạn có ý nghĩa bởi "jitter", nhưng có lẽ

z <- z + runif(z)/1000 

?

+0

hoàn hảo. jitter chỉ là lấy các hàng mới được tạo ra (trừ N col) và thêm một số tiếng ồn nhỏ để chúng không phải là bản sao hoàn hảo. Tôi cho rằng việc thêm một hàm như bạn đã thể hiện là một khởi đầu tốt. – pat

Các vấn đề liên quan