[英]Apply function to list of dataframes and columns matching pattern
我有一个数据框列表,我想将一个函数应用于特定列,这些列遵循列表中所有数据框的模式。
这是数据框的示例列表:
k_2 <- data.frame(Site = c(rep("A",3), rep("B",2)), V1 = c(1,2,3,4,5), V2 = c(1,2,3,4,5))
k_3 <- data.frame(Site = c(rep("A",3), rep("B",2)), V1 = c(1,2,3,4,5), V2 = c(1,2,3,4,5), V3 = c(1,2,3,4,5))
k_4 <- data.frame(Site = c(rep("A",3), rep("B",2)), V1 = c(1,2,3,4,5), V2 = c(1,2,3,4,5), V3 = c(1,2,3,4,5), V4 = c(1,2,3,4,5))
my.list <- list(k_2, k_3, k_4)
my.list
我想申请这个
k2_res <- ddply(k_2, "Site", function(x) colSums(x[c("V1", "V2")])/nrow(x))
到列表中的所有数据帧。 但是,对于 K_3,计算需要是colSums(x[c("V1","V2","V3")])
并且 k_4 将上升到V4
,依此类推。
想法
我想也许我可以使用某种grep
或regrex
来自动选择所有以 V 开头的列?
你在寻找像下面这样的东西吗?
lapply(
my.list,
function(df) ddply(df, "Site", function(x) colSums(x[grepl("V\\d+", names(x))]) / nrow(x))
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.