簡體   English   中英

For循環以子集數據幀列表

[英]For loop to subset a list of dataframes

我有一個數據框列表:

df1<-data.frame("A"=1:10, "B"=c("Mark","John","Lucas","Helen","Rachel","Leyla","Tina","Fanny","Emma","Kate"),"C"=c(91:100))
df2<-data.frame("A"=1:8, "B"=c("Mark","John","Lucas","Helen","Rachel","Leyla","Tina","Fanny"),"C"=c(93:100))
df3<-data.frame("A"=1:3, "B"=c("Mark","John","Lucas"),"C"=c(98:100))
all_df<-list(df1,df2,df3)

我想創建一個按列子集的數據框的新列表,如下所示:

df1_sub<-df1[,c("B","C")]
df2_sub<-df1[,c("B","C")]
df3_sub<-df1[,c("B","C")]
all_df_sub<-list(df1_sub,df2_sub,df3_sub)

最后為每個新的 dataframe 分配其名稱:

mynames<-c("df1_sub","df2_sub","df3_sub")
names(all_df_sub)<-mynames

我想使用lapplyfor循環來做到這一點,但我無法弄清楚如何,因為我在定義 function 和子集數據幀列表之間的某個地方陷入困境(我對此不是很有信心,我檢查了較舊的類似沒有成功的問題)。 到目前為止,這是我正在嘗試的:

all_df_sub<-lapply(all_df, function(all_df){
  for([[i]] in all_df) {
    a<-[[i]][,c("B","C")]
    } 
  all_df } )

任何建議將不勝感激。 謝謝!

你可以試試這個:

all_df_sub <-lapply(all_df, function(dat){dat[2:3]})
all_df_sub <-setNames(all_df_sub, c("df1_sub","df2_sub","df3_sub"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM