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: [EMAIL PROTECTED] > > ______________________________________________ > R-help@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 ______________________________________________ R-help@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