Ram -
   I think you'll have to explain what you're trying to do.
   First, you're creating a 10x10 matrix newd, which could
be done a bit more efficiently by using

    newd = matrix(sample(c(1,2,3,3,),10*length(pvec),replace=TRUE),ncol=10)

   Notice that calling sapply on a matrix applies the function to each
element of the matrix.

But your fun3 function really doesn't make sense, since you are testing each scalar element for equality to a scalar, and then setting
it equal to a vector.  It seems to me that what you're trying to do is

       smpool = c(1,2,3,3)
       allvals = rbind(lcd1,lcd2,lcd3)
       pn = replicate(10,allvals[sample(smpool,1),])

but I can't be sure.
                                        - Phil Spector
                                         Statistical Computing Facility
                                         Department of Statistics
                                         UC Berkeley
                                         spec...@stat.berkeley.edu


On Sat, 9 Apr 2011, Ram H. Sharma wrote:

Dear R experts

Sorry for this question

M1 <- 1:10
lcd1 <- c(11, 22, 33, 44, 11, 22, 33, 33, 22, 11)
lcd2 <- c(22, 11, 44, 11, 33, 11, 22, 22, 11, 22)
lcd3 <- c(12, 12, 34, 14, 13, 12, 23, 23, 12, 12)

#generating variables through sampling
pvec <- c("PR1", "PR2", "PR3", "PR4", "PR5", "PR6", "PR7", "PR8", "PR9",
"PR10")
fun11 <- function(x){
  smpool <- c(1,2,3,3)
 x <-  sample(smpool, 10, replace= TRUE)
 }
newd <- sapply (pvec, fun11)


# function to recode this new generated data
fun3 <- function(x) {
      (if ( x ==1){
     x = lcd1
   }else  if (x ==2){
       x = lcd2
   }  else if ( x ==3 ){
        x = lcd3
       } else x = NA )
               return(x)
             }
Applying the function:
pn <- sapply (newd, fun3)

I am getting 10 x 100 matrix, in contrast to 10 x 10 what I am expecting !

My objective here is to replace data points in all variables in newd
with corresponding value with values vector lcd1 or lcd2 or lcd3 depending
upon whether they are 1 or 2 or 3.
For example;

lcd1 <-   c(11, 22, 33, 44, 11, 22, 33, 33, 22, 11)
lcd2 <-   c(22, 11, 44, 11, 33, 11, 22, 22, 11, 22)
lcd3 <-   c(12, 12, 34, 14, 13, 12, 23, 23, 12, 12)

PR1 <-    c(1,   2,   3,    2,   1,  1,   1,   2, 3,   1)

with the new
PR1n <- c(11,  11,   34,  11,  11, 22, 33, 22, 12, 11)
# as the first element of this vector is determined by PR1[1] indicator
determines whether to pick lcd1[1] or lcd2[1] or lcd3[1] element
similarly for PR1[2] indicator whether to pick lcd1[2] or lcd2[2] or lcd3[2]
element

The same process need to be continued other PR2 to PR10 variables. That's
why I attempted to use sapply.

Thank you for your help


--

Ram H

        [[alternative HTML version deleted]]

______________________________________________
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.


______________________________________________
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