Re: [R] Loop question?

2013-01-26 Thread Jeff Newmiller
The unlist-sapply-seq_len bit is unnecessarily convoluted, since the 
infcprodessa function can accept vector inputs.

z <- infcprodessa( ab$a, TINF, ab$b, ab$b-TINF )
possibles <- ab[ z >= 15 & z <= 20, ]
possibles[ which.min( possibles$a ), ]
---
Jeff NewmillerThe .   .  Go Live...
DCN:Basics: ##.#.   ##.#.  Live Go...
  Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/BatteriesO.O#.   #.O#.  with
/Software/Embedded Controllers)   .OO#.   .OO#.  rocks...1k
--- 
Sent from my phone. Please excuse my brevity.

Berend Hasselman  wrote:

>
>On 26-01-2013, at 12:31, Andras Farkas  wrote:
>
>> 
>> Sorry Jeff, probably the new version of Yahoo mail doing the html, I
>switched back to the older one hope that takes care of the problem. Let
>me clarify the code below:
>> 
>> TINF <-1
>> a <-c(500,750,1000,1250,1500,1750,2000)
>> b <-c(8,12,18,24,36,48,60,72,96)
>> 
>> infcprodessa <-function (D, tin, tau, ts) 
>> (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1 - exp(-0.048
>* tau * exp(-0.048 * (ts - tin))
>> 
>> z <-sapply(1:1, function(n) infcprodessa(a,TINF,b,b-TINF)) 
>> 
>> so I am looking to find the combination of a = 1000 and b = 12, which
>iz a value for "z" that would fall between 15 and 20. Sometimes though
>there may be more than one combinations that will meet criteria, in
>that case I would like to select the combination based on the smallest
>"a" value that has the respective "b" value to meet the criteria,
>> 
>
>ab <- expand.grid(a=a,b=b)
>z <- unlist(sapply(seq_len(nrow(ab)), function(k)
>infcprodessa(ab[k,1],TINF,ab[k,2],ab[k,2]-TINF)))
>
>z.target <- which(z>=15 & z<=20)
>ab[z.target,]
>z[z.target]
>which.min(ab[z.target,][,"a"])
>
>Berend
>
>__
>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.


Re: [R] Loop question?

2013-01-26 Thread Berend Hasselman

On 26-01-2013, at 12:31, Andras Farkas  wrote:

> 
> Sorry Jeff, probably the new version of Yahoo mail doing the html, I switched 
> back to the older one hope that takes care of the problem. Let me clarify the 
> code below:
> 
> TINF <-1
> a <-c(500,750,1000,1250,1500,1750,2000)
> b <-c(8,12,18,24,36,48,60,72,96)
> 
> infcprodessa <-function (D, tin, tau, ts) 
> (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1 - exp(-0.048 * 
> tau * exp(-0.048 * (ts - tin))
> 
> z <-sapply(1:1, function(n) infcprodessa(a,TINF,b,b-TINF)) 
> 
> so I am looking to find the combination of a = 1000 and b = 12, which iz a 
> value for "z" that would fall between 15 and 20. Sometimes though there may 
> be more than one combinations that will meet criteria, in that case I would 
> like to select the combination based on the smallest "a" value that has the 
> respective "b" value to meet the criteria,
> 

ab <- expand.grid(a=a,b=b)
z <- unlist(sapply(seq_len(nrow(ab)), function(k) 
infcprodessa(ab[k,1],TINF,ab[k,2],ab[k,2]-TINF)))

z.target <- which(z>=15 & z<=20)
ab[z.target,]
z[z.target]
which.min(ab[z.target,][,"a"])

Berend

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


Re: [R] Loop question?

2013-01-26 Thread Andras Farkas

Sorry Jeff, probably the new version of Yahoo mail doing the html, I switched 
back to the older one hope that takes care of the problem. Let me clarify the 
code below:

TINF <-1
a <-c(500,750,1000,1250,1500,1750,2000)
b <-c(8,12,18,24,36,48,60,72,96)

infcprodessa <-function (D, tin, tau, ts) 
 (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1 - exp(-0.048 * tau 
* exp(-0.048 * (ts - tin))

z <-sapply(1:1, function(n) infcprodessa(a,TINF,b,b-TINF)) 

so I am looking to find the combination of a = 1000 and b = 12, which iz a 
value for "z" that would fall between 15 and 20. Sometimes though there may be 
more than one combinations that will meet criteria, in that case I would like 
to select the combination based on the smallest "a" value that has the 
respective "b" value to meet the criteria,

sorry for the confusion,

thanks,

Andras


--- On Sat, 1/26/13, Jeff Newmiller  wrote:

> From: Jeff Newmiller 
> Subject: Re: [R] Loop question?
> To: "Andras Farkas" , "r-help@r-project.org" 
> 
> Date: Saturday, January 26, 2013, 2:09 AM
> Please read the Posting Guide
> no html email
> reproducible example please
> 
> In general, you can use expand.grid to generate all
> combinations of inputs, compute results as a vector just as
> long as the expand.grid data frame has rows, and identify
> which results meet your criteria by a logical test, and use
> that test to identify which input combinations worked.
> Provide a working starting point and someone might give you
> working code as an answer. (where do a and b come into your
> problem?)
> ---
> Jeff Newmiller           
>             The 
>    .   
>    .  Go Live...
> DCN: 
>       Basics: ##.#.   
>    ##.#.  Live Go...
>                
>                
>       Live:   OO#.. Dead:
> OO#..  Playing
> Research Engineer (Solar/Batteries     
>       O.O#.   
>    #.O#.  with
> /Software/Embedded Controllers)       
>        .OO#.   
>    .OO#.  rocks...1k
> ---
> 
> Sent from my phone. Please excuse my brevity.
> 
> Andras Farkas 
> wrote:
> 
> >Dear All
> >�
> >I have the following data (somewhat simplyfied):
> >�
> >TINF <-1
> >a <-c(500,750,1000,1250,1500,1750,2000)
> >b <-c(8,12,18,24,36,48,60,72,96)
> >�
> >following function:
> >�
> >infcprodessa <-function (D, tin, tau, ts) 
> >� (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1
> - exp(-0.048 *
> >tau * exp(-0.048 * (ts - tin))
> >
> >z <-sapply(1:1, function(n)
> infcprodessa(1000,TINF,12,12-TINF))
> >�
> >is there a way to select the combination of respective a
> and b values
> >that would result in a calculated z that is between 15
> and 20? In this
> >case the a would be 1000 and the b would be 12 (other
> combinations are
> >also possible), but how could I automatically find them?
> perhaps a
> >loop?
> >�
> >Apreciate the help,
> >�
> >Sincerely,
> >�
> >Andras
> >    [[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.


Re: [R] Loop question?

2013-01-26 Thread David Hugh-Jones
Here's a toy example which you can apply the logic of:

dfr <- expand.grid(1:3,1:2)
results <- apply(dfr, 1, sum)
dfr[results==4,]





On 25 January 2013 22:19, Andras Farkas  wrote:
>
> Dear All
>
> I have the following data (somewhat simplyfied):
>
> TINF <-1
> a <-c(500,750,1000,1250,1500,1750,2000)
> b <-c(8,12,18,24,36,48,60,72,96)
>
> following function:
>
> infcprodessa <-function (D, tin, tau, ts)
>   (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1 - exp(-0.048 * tau 
> * exp(-0.048 * (ts - tin))
>
> z <-sapply(1:1, function(n) infcprodessa(1000,TINF,12,12-TINF))
>
> is there a way to select the combination of respective a and b values that 
> would result in a calculated z that is between 15 and 20? In this case the a 
> would be 1000 and the b would be 12 (other combinations are also possible), 
> but how could I automatically find them? perhaps a loop?
>
> Apreciate the help,
>
> Sincerely,
>
> Andras
> [[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.


Re: [R] Loop question?

2013-01-25 Thread Jeff Newmiller
Please read the Posting Guide
no html email
reproducible example please

In general, you can use expand.grid to generate all combinations of inputs, 
compute results as a vector just as long as the expand.grid data frame has 
rows, and identify which results meet your criteria by a logical test, and use 
that test to identify which input combinations worked.
Provide a working starting point and someone might give you working code as an 
answer. (where do a and b come into your problem?)
---
Jeff NewmillerThe .   .  Go Live...
DCN:Basics: ##.#.   ##.#.  Live Go...
  Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/BatteriesO.O#.   #.O#.  with
/Software/Embedded Controllers)   .OO#.   .OO#.  rocks...1k
--- 
Sent from my phone. Please excuse my brevity.

Andras Farkas  wrote:

>Dear All
>�
>I have the following data (somewhat simplyfied):
>�
>TINF <-1
>a <-c(500,750,1000,1250,1500,1750,2000)
>b <-c(8,12,18,24,36,48,60,72,96)
>�
>following function:
>�
>infcprodessa <-function (D, tin, tau, ts) 
>� (D * (1 - exp(-0.048 * tin))/(tin * (0.048*79) * (1 - exp(-0.048 *
>tau * exp(-0.048 * (ts - tin))
>
>z <-sapply(1:1, function(n) infcprodessa(1000,TINF,12,12-TINF))
>�
>is there a way to select the combination of respective a and b values
>that would result in a calculated z that is between 15 and 20? In this
>case the a would be 1000 and the b would be 12 (other combinations are
>also possible), but how could I automatically find them? perhaps a
>loop?
>�
>Apreciate the help,
>�
>Sincerely,
>�
>Andras
>   [[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.


Re: [R] Loop question

2012-05-30 Thread R. Michael Weylandt
Note that in R >= 2.15 you can also use paste0 for this operation more
efficiently.

Michael

On Thu, May 31, 2012 at 1:58 AM, Özgür Asar  wrote:
> Dear Sebastian,
>
> The following will create the names
>
> paste("sb",1:5,sep="")
> paste("sw",1:5,sep="")
> paste("Lw",1:5,sep="")
> paste("Lb",1:5,sep="")
>
> Then you can easily combine and/or order them in R.
>
> Hope this helps.
> Ozgur
>
> -
> 
> Ozgur ASAR
>
> Research Assistant
> Middle East Technical University
> Department of Statistics
> 06531, Ankara Turkey
> Ph: 90-312-2105309
> http://www.stat.metu.edu.tr/people/assistants/ozgur/
> --
> View this message in context: 
> http://r.789695.n4.nabble.com/Loop-question-tp4631896p4631900.html
> Sent from the R help mailing list archive at Nabble.com.
>
> __
> 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.


Re: [R] Loop question

2012-05-30 Thread Özgür Asar
Dear Sebastian,

The following will create the names

paste("sb",1:5,sep="")
paste("sw",1:5,sep="")
paste("Lw",1:5,sep="")
paste("Lb",1:5,sep="")

Then you can easily combine and/or order them in R.

Hope this helps.
Ozgur

-

Ozgur ASAR

Research Assistant
Middle East Technical University
Department of Statistics
06531, Ankara Turkey
Ph: 90-312-2105309
http://www.stat.metu.edu.tr/people/assistants/ozgur/
--
View this message in context: 
http://r.789695.n4.nabble.com/Loop-question-tp4631896p4631900.html
Sent from the R help mailing list archive at Nabble.com.

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


Re: [R] loop question

2011-04-05 Thread Joshua Wiley
Dear Thomas,

On Tue, Apr 5, 2011 at 8:33 AM, Thomas  wrote:
> Dear all,
>
> I am trying to set up a list with 1:c objects each meant to capture the
> coefficients for one coefficient and 100 replications. I receive the
> following error message:
>
> Error in betaboot[[p]] : subscript out of bounds.
>
> My code is below. Where is my mistake?
>
> Many thanks,
>
> Thomas
>
> _
> betaboot<-list(NULL)

if you know the number of bootstraps (which you seem to later on), a
preferred way to instatiate the list would be:

betaboot <- vector(mode = "list", length = yourlength)

>
> for (i in 1:c) {

because "c()" is such an important function, I would strongly
encourage you not to use it also as a variable.

> betaboot[[i]]<-cbind()

Don't use this to build an empty list.

> }
>
>
> num <- 100 # this is the number of bootstraps
>
> for (i in 1:num) {
>
>    [BOOTSTRAP]
>
>  coef.temp <- coef(model.temp, data=newdata)
>
>  for (p in 1:c){
>  betaboot[[p]] <- cbind(betaboot[[p]], coef.temp[,p])

This should work assuming betaboot is instatiated properly.  That
said, it looks like you have a nested for loop and then just keep
cbind()ing each element of betaboot bigger and bigger.  You may get a
performance increase if you also instantiate each matrix/dataframe
inside betaboot.  Then the call would become something like:

betaboot[[i]][,p] <- coef.temp[,p]

that is, you can use a chained series of extraction operators to get
to the appropriate column in the matrix/dataframe inside the
appropriate list element.  Then rather than constantly using cbind(),
you just place coef.temp[,p] where you want it.  The only requirement
is that you know the sizes of the matrices/dataframes going in so you
can create empty ones from the get go.

Cheers,

Josh

>  }
>
>  }
>
> __
> 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.

-- 
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/

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


Re: [R] Loop question

2009-04-18 Thread Stavros Macrakis
On Fri, Apr 17, 2009 at 10:12 PM, Brendan Morse  wrote:
> ...I would like to automatically generate a series of matrices and
> give them successive names. Here is what I thought at first:
>
> t1<-matrix(0, nrow=250, ncol=1)
>
> for(i in 1:10){
>        t1[i]<-rnorm(250)
> }
>
> What I intended was that the loop would create 10 different matrices with a
> single column of 250 values randomly selected from a normal distribution,
> and that they would be labeled t11, t12, t13, t14 etc.

Very close.  But since you've started out with a *matrix* t1, your
assignments to t1[i] will assign to parts of the matrix.  To correct
this, all you need to do is initialize t1 as a *list of matrices* or
(even better) as an *empty list*, like this:

   t1 <- list()

and then assign to *elements* of the list (using [[ ]] notation), not
to *sublists* of the list (which is what [ ] notation means in R),
like this:

for(i in 1:10){
   t1[[i]] <- rnorm(250)
}

Is that what you had in mind?

   -s

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


Re: [R] Loop question

2009-04-18 Thread Jun Shen
Brendan,

Matrix is atomic. Once you define t1 in matrix, t1[1]=0  rather than the
whole column. I would just convert t1 to a data frame, which is a special
list, by adding t1<- data.frame(t1).  Now t1[1] represents the whole column.
Then you can use your loop to add more columns.

Jun

On Fri, Apr 17, 2009 at 9:12 PM, Brendan Morse wrote:

> Hi everyone, I am trying to accomplish a small task that is giving me quite
> a headache. I would like to automatically generate a series of matrices and
> give them successive names. Here is what I thought at first:
>
> t1<-matrix(0, nrow=250, ncol=1)
>
> for(i in 1:10){
>t1[i]<-rnorm(250)
> }
>
> What I intended was that the loop would create 10 different matrices with a
> single column of 250 values randomly selected from a normal distribution,
> and that they would be labeled t11, t12, t13, t14 etc.
>
> Can anyone steer me in the right direction with this one?
>
> Thanks!
> Brendan
>
> __
> 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.
>



-- 
Jun Shen PhD
PK/PD Scientist
BioPharma Services
Millipore Corporation
15 Research Park Dr.
St Charles, MO 63304
Direct: 636-720-1589

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


Re: [R] Loop question

2009-04-17 Thread Ben Bolker



Brendan Morse wrote:
> 
> Hi everyone, I am trying to accomplish a small task that is giving me  
> quite a headache. I would like to automatically generate a series of  
> matrices and give them successive names. Here is what I thought at  
> first:
> 
> t1<-matrix(0, nrow=250, ncol=1)
> 
> for(i in 1:10){
>   t1[i]<-rnorm(250)
> }
> 
> What I intended was that the loop would create 10 different matrices  
> with a single column of 250 values randomly selected from a normal  
> distribution, and that they would be labeled t11, t12, t13, t14 etc.
> 

I think you're basically looking for

http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f

or

http://wiki.r-project.org/rwiki/doku.php?id=tips:data-misc:create_var_names

but see the comments in both places that indicate why it may be easier to do
this
as a list.

for(i in 1:10){
assign(paste("t1",i,sep=""),matrix(rnorm(250)))
}


-- 
View this message in context: 
http://www.nabble.com/Loop-question-tp23108752p23108788.html
Sent from the R help mailing list archive at Nabble.com.

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


Re: [R] Loop question

2009-04-17 Thread Jorge Ivan Velez
Dear Brendan,
One way could be either

bigt <- sapply(1:10,function(x) rnorm(250))
colnames(bigt) <- paste('t',1:10,sep="")
bigt

or

bigt2 <- NULL
for(i in 1:10) bigt2 <- cbind( bigt2, rnorm(250) )
colnames(bigt2) <- paste('t',1:10,sep="")
bigt2

or

bigt3 <- matrix(rnorm(250*10),ncol=10)
colnames(bigt3) <- paste('t',1:10,sep="")
bigt3


HTH,

Jorge



On Fri, Apr 17, 2009 at 10:12 PM, Brendan Morse wrote:

> Hi everyone, I am trying to accomplish a small task that is giving me quite
> a headache. I would like to automatically generate a series of matrices and
> give them successive names. Here is what I thought at first:
>
> t1<-matrix(0, nrow=250, ncol=1)
>
> for(i in 1:10){
>t1[i]<-rnorm(250)
> }
>
> What I intended was that the loop would create 10 different matrices with a
> single column of 250 values randomly selected from a normal distribution,
> and that they would be labeled t11, t12, t13, t14 etc.
>
> Can anyone steer me in the right direction with this one?
>
> Thanks!
> Brendan
>
> __
> 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.
>

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