[R] Learning, "if" and "else"

Chuck Cleland ccleland at optonline.net
Mon Jun 13 21:50:48 CEST 2005


You could use ifelse() here:

lifeform <- data.frame(dbh = c(30,29,15,14,30,29),
                        form=factor(c("tree",  "tree",
                                      "liana", "liana",
                                      "palm",  "palm")))

lifeform$biomass <-
ifelse(lifeform$form=="tree", 
exp(-4.898+4.512*log(lifeform$dbh)-0.319*(log(lifeform$dbh))^2),
ifelse(lifeform$form=="liana", 10^(0.07 + 2.17 * log10 (lifeform$dbh)),
NA))

 > lifeform$biomass
[1] 860.8883 794.8866 418.9074 360.6599       NA       NA

See ?ifelse

Paulo Brando wrote:
> Dear Rs,
> 
> I have tried to use conditional expressions to calculate biomass for
> different life forms (trees, lianas, and palms).
> 
> Here is an example:
> 
> 
>>lifeform
> 
> 
>     dbh  form
> 1   30  tree
> 2   29  tree
> 3   28  tree
> 4   27  tree
> 5   26  tree
> 6   25  tree
> 7   24  tree
> 8   23  tree
> 9   22  tree
> 10  21  tree
> 11  20  tree
> 12  15 liana
> 13  14 liana
> 14  13 liana
> 15  12 liana
> 16  11 liana
> 17  10 liana
> 18   9 liana
> 19   8 liana
> 20   7 liana
> 21   6 liana
> 22   5 liana
> 23  30  palm
> 24  29  palm
> 25  28  palm
> 26  27  palm
> 27  26  palm
> 28  25  palm
> 29  24  palm
> 30  23  palm
> 31  22  palm
> 32  21  palm
> 33  20  palm
> 
> ### I want to include biomass 
> 
> lifeform$biomass <- 
> 
> {
>       if(lifeform$form=="tree")
>        exp(-4.898+4.512*log(dbh)-0.319*(log(dbh))^2) 
>        else{ 
>         if (lifeform$form=="liana")
>        10^(0.07 + 2.17 * log10 (dbh))
>        else ("NA")
> }
> Warning message:
> the condition has length > 1 and only the first element will be used in:
> if (lifeform$form == "tree") exp(-4.898 + 4.512 * log(dbh) -
> 
> 
> ### But I always get the message warning message above. 
> 
> 
> 
> I looked for similar examples in R mail list archive, but they did not
> help a lot.
> 
> I am quite new to 'R'. Any material that covers this theme?
> 
> Thank you very much!
> 
> Paulo
> 
> PS. Sorry about the last e-mail. I did not change the message title.
> ________________________________________
> Paulo M. Brando
> Instituto de Pesquisa Ambiental da Amazonia (IPAM)
> Santarem, PA, Brasil.
> Av. Rui Barbosa, 136.
> Fone: + 55 93 522 55 38
> www.ipam.org.br
> E-mail: pmbrando at ipam.org.br
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894




More information about the R-help mailing list