2013-01-03 4 views
5

다음과 같이 정수 값 N을 지정하는 열이 하나있는 데이터 프레임 또는 행렬이 있다고 가정합니다 (열 5). 각 행을 N 번 복사하도록 개체를 다시 채우는 벡터 접근 방식이 있습니까?행을 복사하는 방법 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 

결과는 다음과 같습니다.

[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 

또 다른 질문은 새롭게 채워진 행을 지터링하여 새로 복사 된 데이터가 겹치지 않도록하는 방법입니다.

답변

7

일부 만들어 낸 데이터 :

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

그냥 수행

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 

그리고 난 당신이 "지터"무슨 뜻인지 잘 모르겠지만, 아마도

z <- z + runif(z)/1000 

?

+0

완벽 지터는 그냥 새로 채워진 행 (N 열 빼기)을 가져 와서 약간의 노이즈를 추가하여 완전한 복사본이 아닌 것입니다. 당신이 보여준대로 함수를 추가하는 것이 좋은 출발이라고 생각합니다. – pat

관련 문제