[R] Help on not matching object lengths

William Dunlap wdunlap at tibco.com
Wed Aug 29 20:29:27 CEST 2012


> y <-matrix(1:50,ncol=5)
> x <- rowSums(y > 13) # sum of logicals counts number of TRUEs
> x # your first 'x':
 [1] 3 3 3 4 4 4 4 4 4 4
> sum(0.25 * x > 0.8) # sum of logicals counts number of TRUEs
[1] 7

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Andras Farkas
> Sent: Wednesday, August 29, 2012 9:19 AM
> To: PIKAL Petr; r-help at r-project.org
> Subject: Re: [R] Help on not matching object lengths
> 
> Petr,
> 
> thank you very much for the help, I think this will work... It seems like this will generate
> 33 columns and 1000 rows with calculated values, which is fine. I also simply used the
> function x=d + dnext, which generated another 33 columns and 1000 rows object with
> the cell contents added up. In my example moving forward from here I will cut down the
> sample size as you suggested, so using the following code we will get a matrix of 10 rows
> and 5 columns:
> 
> y <-matrix(1:50,ncol=5)
> 
> In the next step i would need to find in each row the values that are greater then a pre-
> specified value (any random number can be picked for the purpose of presenting the
> example, lets pick the number 13). I do not actually need to know what the value is, I
> would just need to know the total number of cells in a row which contain values of > 13
> out of the 5 of them per row, then I need to multiply that count by 0.25 for each row and
> place them in an object , lets call that x (this could also be a matrix perhaps with 1
> column).
> 
> 1. So in the 1st row of y in my example this would be 3, 2nd row is 3, third is 3, 4th is 4,
> 5th is 4, and so on...
> 2. let's multiply them with 0.25 to create x : so 1st is 3*0.25, 2nd is 3*0.25, 3rd is 3*0.25,
> 4th is 4*0.25, 5th is 4*0.25, and so on....
> 
> finally, I would need to find the total number of cells in this newly created x that are
> greater then z, lets make that z = 0.8. based on the example data matrix of y this final
> number should be 7.
> 
>  Would you mind sharing your input on how to accomplish that?
> 
> thanks,
> 
> Andras
> 
> 
> ________________________________
> From: PIKAL Petr <petr.pikal at precheza.cz>
> 
> roject.org>
> Sent: Wednesday, August 29, 2012 11:11 AM
> Subject: RE: [R] Help on not matching object lengths
> 
> Hi
> 
> I am not sure if I understand it correctly but maybe
> a <-seq(0,8, by = sign(8-0)*0.25)
> b <-seq(8,16, by = sign(16-8)*0.25)
> const <-runif(1000,50,60)
> const <- rep(const, 33)
> d <-exp(-const*a)+exp(-const*b)
> dim(d) <- c(33,1000)
> 
> gives you matrix 33x1000
> 
> Maybe you can simplyfy the example to 10 columns and 3 rows and show better what do
> you want to do with it.
> 
> Regards
> Petr
> 
> > -----Original Message-----
> > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> > project.org] On Behalf Of Andras Farkas
> > Sent: Wednesday, August 29, 2012 12:25 PM
> > To: r-help at r-project.org
> > Subject: [R] Help on not matching object lengths
> >
> > Dear All
> >
> > I have the following code set up:
> > Code #1
> > a <-matrix(seq(0,8, by = sign(8-0)*0.25)) b <-matrix(seq(8,16, by =
> > sign(16-8)*0.25)) c <-runif(1000,50,60) d <-exp(-c*a)+exp(-c*b)
> >
> > This will give me the obvious error message of lengths not
> > matching. What I am trying to do here is to have 33 rows x 1000
> > columns d values calculated in total. As an eaxmple for visual, this is
> > what it supposed to look like where d1,d2,d3 and so on up to d1000 are
> > calculated using the equation and the respective a and b values:
> > Code #2
> > d1 <-runif(33,10,20)
> > d2 <-runif(33,15,20)
> > d3 <-runif(33,18,20)
> > e <-cbind(a,b,d1,d2,d3)
> >
> > Next, I would like to generate 33 x 1000 newd values again using newa
> > and newb values and the same c values, eg:
> > Code #3
> > newa <-matrix(seq(16,24, by = sign(24-16)*0.25)) newb <-
> > matrix(seq(24,36, by = sign(36-24)*0.25)) c <-runif(1000,50,60) newd <-
> > exp(-c*newa)+exp(-c*newb)
> >
> > Next I would like to sum d(ith) and newd(ith) according to their by
> > sequence location in the matrices (or whatever type of objects we are
> > working at this point) based on a and newa . As an example, Code
> > #1 should generate a of 0,0.25,0.5, and so on with respective d for the
> > a value 0, 0.25, 0.5, and so on..., while Code #3 should generate newa
> > of 16,16.25,16.5, and so on with respective newd for the a value 0,
> > 0.25, 0.5, and so on..... In the next object generated, we should again
> > have 33 rows x 1000 columns with values, the first row in the first
> > column would have the result of (d at 0+newd at 16), the second row
> > would have the result of (d at 0.25+newd at 16.25), while the 3rd row
> > would have the result of (d at 0.5+newd at 16.5), and so on...
> >
> > Last, after the sums established, I would need to find the value/s that
> > are >x in each column of the latest object, and multiply by 0.25 to
> > generate a list or row 34 for that matter for each 1000 columns, than
> > in this row or list I would need to find all values that are >y.
> >
> > I apologize for the lengthy question, and all of your help would be
> > greatly apreciated,
> >
> > sincerely,
> >
> > andras
> >     [[alternative HTML version deleted]]
> 	[[alternative HTML version deleted]]




More information about the R-help mailing list