繁体   English   中英

将函数应用于数据框列表和匹配模式的列

[英]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 ,依此类推。

想法

我想也许我可以使用某种grepregrex来自动选择所有以 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM