Hi, I need help writing a function I capture seal pups mutliple times during the lactation season in order to monitor their growth rate. When I release them, the recovery (mother-pup) time is not the same for all individuals. I want to know if individuals that recover their mother the fastest are the ones with the highest growth rates. So, I noted at every release if the pup reovered his mother before we leave (yes or no). My dataframe looks like this Capture nb individual individual capture motherrecovery growth rate 1 1 1 n 0.5 2 1 2 y 0.5 3 1 3 y 0.5 4 1 4 y 0.5 5 1 5 n 0.5 6 2 1 y 0.3 7 2 2 y 0.3 8 3 1 y 0.4 9 3 2 n 0.4 10 3 3 y 0.4 ... I want to calculate a rate of mother recovery by individual, i.e. nb of recoveries (y)/nb of captures. So for indivial 1 it would be 3/5 = 0.6. I want to write a function that does this for all the individuals in my dataframe, i.e. around 400 individuals (this is why I want to write a function, it would be too long by hand) Thank you, Joanie Van de Walle ??tudiante ?? la Ma??trise en Biologie D??partement de Biologie 1045, avenue de la M??decine Pavillon Vachon, bureau 2044 Universit?? Laval Qu??bec, Canada, G1V 0A6
Applying a function
4 messages · Joanie Van De Walle, Steinar Veka, Rui Barradas
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20111223/55debbe0/attachment.pl>
Joanie Van De Walle wrote
Hi, I need help writing a function I capture seal pups mutliple times during the lactation season in order to monitor their growth rate. When I release them, the recovery (mother-pup) time is not the same for all individuals. I want to know if individuals that recover their mother the fastest are the ones with the highest growth rates. So, I noted at every release if the pup reovered his mother before we leave (yes or no). My dataframe looks like this Capture nb individual individual capture motherrecovery growth rate 1 1 1 n 0.5 2 1 2 y 0.5 3 1 3 y 0.5 4 1 4 y 0.5 5 1 5 n 0.5 6 2 1 y 0.3 7 2 2 y 0.3 8 3 1 y 0.4 9 3 2 n 0.4 10 3 3 y 0.4 ... I want to calculate a rate of mother recovery by individual, i.e. nb of recoveries (y)/nb of captures. So for indivial 1 it would be 3/5 = 0.6. I want to write a function that does this for all the individuals in my dataframe, i.e. around 400 individuals (this is why I want to write a function, it would be too long by hand) Thank you,
______________________________________________ R-help@ 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.
Hello, Here is a one line function recovery.rate <- function(x) unlist(lapply(split(tab1, tab1[,2]), function(x) mean(x[[4]]=="y"))) It works with that table. I hope it helps Merry Christmas Rui Barradas -- View this message in context: http://r.789695.n4.nabble.com/Applying-a-function-tp4229277p4230100.html Sent from the R help mailing list archive at Nabble.com.
Sorry, in the function body, NO 'tab1', use 'x' only: recovery.rate <- function(x) unlist(lapply(split(x, x[,2]), function(x) mean(x[[4]]=="y"))) The error is because 'tab1' existed in the environment and the function would find it. This time, tested after removing 'tab1'. Rui Barradas -- View this message in context: http://r.789695.n4.nabble.com/Applying-a-function-tp4229277p4230106.html Sent from the R help mailing list archive at Nabble.com.