On Mar 17, 2012, at 2:36 PM, Diann Prosser wrote:

Hi All,

I want to draw samples (n=4) from one of 2 triangular distributions for each value in a matrix. I am using an ifelse statement to try to define
which distribution to draw from.

From the output, I can see that the ifelse statement is choosing the correct
distribution, however, my n=4 simulations aren't occurring. Is there a way
to adjust the ifelse statement to fix this, or must I take an entirely
different approach? Many thanks for your help.

matrx <- matrix(c(2, 1, 1, 2, 2,1), nc=nx)
matrx
    [,1] [,2] [,3]
[1,]    2    1    2
[2,]    1    2    1
# rtriang from mc2d package: function (n, min = -1, mode = 0, max = 1) * dmatrx<- ifelse(matrx==1, rtriang(4, min=0.001, mode=matrx, max=2.001),
rtriang(4, min=2, mode=matrx, max=3))*
Warning message:
In rtriang(4, min = 2, mode = matrx, max = 3) : NaN in rtriang
dmatrx
         [,1]     [,2]      [,3]
[1,] 2.7627761 1.305099 2.7627761
[2,] 0.6158242 2.218274 0.6158242
#(this output should have 4 times as many elements)

If you want four elements then ifelse is the wrong function. It returns a _vector_, not a matrix. If you want a 2 * 3 * 4 array then you need to use functions appropriate to the purpose. You didn't provide 'rtriang', but that's not the issue and this illustrates one approach.

> sapply(matrx,  function(x) if( x==1){rnorm(4)} else {rnorm(4)})
           [,1]       [,2]       [,3]       [,4]       [,5]
[1,] -0.8829560 -0.1173966 -1.3558024  0.2699102 -0.1267338
[2,] -1.5167439  1.2650024  0.2373172 -1.5316328 -1.8418345
[3,] -0.1196694  0.8097693 -0.4223064  0.1053030  0.9030908
[4,] -1.0486071 -0.2470492 -0.5942510 -0.6877101  0.7017433
           [,6]
[1,] -0.5026799
[2,] -4.0098848
[3,] -2.4630189
[4,] -0.6529206
--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to