2013-03-25 3 views
3

R - 매트릭스의 모든 입력에 대해 FUN을 계산할 수있는 적용 제품군의 함수가 있습니까? 나는 확률의 n x m 매트릭스 M이 - M[i, j] = pP(x = 1) = pP(x = 0) = 1 - pM에서 샘플링하는 것을 내가 apply을 사용할 수,
apply(M, 1, function(x)(sample(0:1,length(x), replace = TRUE))) 을하지만,이 기능은, 나는 그것이 오히려해야한다고 생각하기 때문에 제대로 작동 있는지 확실하지 않습니다 :R - 행렬 입력마다 FUN을 계산할 수있는 적용 패밀리의 함수가 있습니까?

apply(M, 1, function(x)(sample(0:1,length(x), replace = TRUE, prob = x))) 두 번째는 작동하지 않습니다. 그 외에도 apply 기능을 포함하는 더 간단하고 빠른 솔루션이 있습니까?

예 :

> M=matrix(runif(10*4),10,4) 
> M 
      [,1]  [,2]  [,3]  [,4] 
[1,] 0.4497123 0.74045206 0.8112949 0.33122848 
[2,] 0.5416048 0.35812976 0.3877630 0.01491928 
[3,] 0.7164970 0.15793958 0.1822459 0.07017764 
[4,] 0.7965967 0.85600843 0.3129818 0.25698186 
[5,] 0.8553264 0.06880133 0.4516520 0.14231129 
[6,] 0.8667404 0.49394338 0.1331386 0.37769487 
[7,] 0.9446913 0.87368456 0.3680256 0.92143709 
[8,] 0.4251636 0.69126643 0.5355501 0.45516271 
[9,] 0.7483549 0.04289660 0.7817728 0.37752422 
[10,] 0.0218563 0.91304663 0.4800049 0.19477370 

> apply(M, 1, function(x)(sample(0:1,length(x), replace = TRUE, prob = x))) 
Error in sample(0:1, length(x), replace = TRUE, prob = x) : 
    incorrect number of probabilities 

> apply(M, 1, function(x)(sample(0:1,length(x), replace = TRUE))) 

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 1 0 0 1 0 0 1 1 0  0 
[2,] 0 1 0 0 1 1 0 1 1  0 
[3,] 0 1 0 1 1 0 1 1 1  1 
[4,] 0 0 1 1 0 0 1 1 0  1 

답변

9

당신은 apply에 하나 개 이상의 차원을 전달할 수 있습니다. 당신이 행으로 샘플링하고 그 열이 경우 rbinom에서 rbinom

apply(M, 1:2, rbinom, size =1, n=1) 

     [,1] [,2] [,3] [,4] 
[1,] 0 1 0 0 
[2,] 1 0 0 1 
[3,] 1 0 1 0 
[4,] 1 0 1 0 
[5,] 1 0 0 0 
[6,] 1 0 0 1 
[7,] 0 1 1 0 
[8,] 1 1 0 1 
[9,] 1 0 1 0 
[10,] 0 0 0 1 

를 사용 이항 distrution에서 샘플링으로 1:2

를 사용하는 경우 (R에 많은 기능과 마찬가지로), 벡터화, 때입니다 행렬을 전달하면 모든 항목에 대해 계산됩니다. 그런 다음 필요한 matrix 크기로 다시 조정해야합니다. 예를 들어

matrix(rbinom(n=length(M),size=1,prob=M), nrow = nrow(M), ncol = ncol(M)) 
+0

지금은 거의 5 년간 R을 사용하고, 나는 "당신이 행으로 샘플링하고 그 열은 1 사용하는 경우 : 2"에 대해 들어 본 적이없는, 좋은, 감사 – Qbik

+0

@Qbik 도움말에서도 언급했습니다! – hadley

+0

@hadley indead ps. 내가 좋아하는 RStudio – Qbik