[英]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.