Skip to content

Loop question?

6 messages · Andras Farkas, David Hugh-Jones, Berend Hasselman +1 more

#
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:<jdnewmil at dcn.davis.ca.us>        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 <motyocska at yahoo.com> wrote:

            
#
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 <motyocska at yahoo.com> 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,

sorry for the confusion,

thanks,

Andras
--- On Sat, 1/26/13, Jeff Newmiller <jdnewmil at dcn.davis.CA.us> wrote:

            
#
On 26-01-2013, at 12:31, Andras Farkas <motyocska at yahoo.com> wrote:

            
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
#
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 Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        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.
Berend Hasselman <bhh at xs4all.nl> wrote: