【问题标题】:For loop to subset a list of dataframesFor循环以子集数据帧列表
【发布时间】:2021-04-26 20:42:52
【问题描述】:

我有一个数据框列表:

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)

最后为每个新数据框分配其名称:

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

我想使用lapplyfor 循环来做到这一点,但我无法弄清楚如何,因为我在定义函数和子集数据帧列表之间陷入了困境(我不是很自信有了这个,我检查了较旧的类似问题但没有成功)。这是我目前正在尝试的:

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

任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: r list dataframe subset


    【解决方案1】:

    你可以试试这个:

    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"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-01
      • 2019-09-21
      • 2020-04-03
      • 2013-11-21
      • 1970-01-01
      • 2021-07-05
      • 2015-06-20
      • 1970-01-01
      相关资源
      最近更新 更多