簡體   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