plyr (version 1.8.4)

colwise: Column-wise function.


Turn a function that operates on a vector into a function that operates column-wise on a data.frame.


colwise(.fun, .cols = true, ...)

catcolwise(.fun, ...)

numcolwise(.fun, ...)





either a function that tests columns for inclusion, or a quoted object giving which columns to process


other arguments passed on to .fun


catcolwise and numcolwise provide version that only operate on discrete and numeric variables respectively.


Run this code
# Count number of missing values
nmissing <- function(x) sum(

# Apply to every column in a data frame
# This syntax looks a little different.  It is shorthand for the
# the following:
f <- colwise(nmissing)

# This is particularly useful in conjunction with d*ply
ddply(baseball, .(year), colwise(nmissing))

# To operate only on specified columns, supply them as the second
# argument.  Many different forms are accepted.
ddply(baseball, .(year), colwise(nmissing, .(sb, cs, so)))
ddply(baseball, .(year), colwise(nmissing, c("sb", "cs", "so")))
ddply(baseball, .(year), colwise(nmissing, ~ sb + cs + so))

# Alternatively, you can specify a boolean function that determines
# whether or not a column should be included
ddply(baseball, .(year), colwise(nmissing, is.character))
ddply(baseball, .(year), colwise(nmissing, is.numeric))
ddply(baseball, .(year), colwise(nmissing, is.discrete))

# These last two cases are particularly common, so some shortcuts are
# provided:
ddply(baseball, .(year), numcolwise(nmissing))
ddply(baseball, .(year), catcolwise(nmissing))

# You can supply additional arguments to either colwise, or the function
# it generates:
numcolwise(mean)(baseball, na.rm = TRUE)
numcolwise(mean, na.rm = TRUE)(baseball)
# }

Run the code above in your browser using DataCamp Workspace