| lapplydt | R Documentation |
Based on columns in data, run function on subsets of data and return the results in a list, carrying names of the subsets. Say a column is 'model' and you want to create a plot, run a regression or anything on the data for each model. In that case lapplydt(data,by="model",fun=function(x)lm(lAUC~lDose,data=x)). The l in lapplydt is because a list is returned (like lapply), the dt is because the input is a data.table (anything that can be converted to such is OK).
lapplydt(data, by, fun, drop.null = FALSE)
data |
Data set to process. Must be a data.frame-like structure. |
by |
Column to split data by. |
fun |
function to pass to 'lapply()'. If an argument called '.nm' is defined, it gets a special meaning and can be used to retrieve the name of the respective subset. See examples. |
drop.null |
If some subsets return 'NULL', drop the empty elements in the returned list? |
the name of the current dataset can be reached with the '.nm' variable, if such argument is defined in 'fun'. Se examples.
When is lapplydt better than lapply(split(dt),...)? In some cases, the lapply() way may drop the names stemming from the values of the columns you are splitting by. Other advantages is the '.nm' feature described above, and that ‘lapplydt' can drop NULL results. That’s about it.
a list
pk <- readRDS(file=system.file("examples/data/xgxr2.rds",package="NMdata"))
lapplydt(pk,by="DOSE",fun=nrow)
lapplydt(pk,by="DOSE",fun=function(x,.nm) {
message("this is subset",.nm)
message(paste("Result:",nrow(x)))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.