2014-12-18 4 views
1

으로 채 웁니다. repeat의 각 반복에서 행렬에 열을 추가하는 R 프로그램을 작성하고 있습니다. repeat을 선택했기 때문에 현재 반복 번호에 액세스 할 수 없습니다. cbind을 사용하여 행렬을 만들 수 있지만 느리다는 것을 알고 있습니다. 현재 색인에 대한 지식없이 사전 할당 된 행렬을 열별로 채우는 방법이 있습니까?미리 할당 된 행렬을 R

+0

NAs로 채워지지 않은 첫 번째 열의 색인을 가져 옵니까? 또는 반복의 각 반복에서 증가시킬 수있는 변수'ind'를 생성하십시오. 두 번째 옵션이 아마도 가장 좋습니다 (가장 빠름) – Cath

답변

3

매트릭스의 크기를 테스트하고 그 크기를 청크별로 늘리십시오. 다음은 예입니다.

set.seed(42) 
mat <- matrix(NA, ncol=2, nrow=10) 
i <- 1 
repeat { 
    if (i > nrow(mat)) mat <- rbind(mat, matrix(NA, ncol=2, nrow=10)) 
    x <- rnorm(1) 
    y <- rnorm(1, mean=3) 
    mat[i,] <- c(x, y) 
    if (x > y) break 
    i <- i+1 
} 

mat[seq_len(i),] 

매트릭스를 필요에 맞게 늘리십시오.

+0

고맙습니다 @ 롤랜드 귀하의 답변이 도움이되었습니다. 나는 이것을'적용'을 통해 할 수있는 방법이 없다는 사실을 알고있다. – Lukasz

+0

반복 횟수를 모른다면'* apply' 함수를 사용할 수 없습니다. – Roland