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)
最后为每个新数据框分配名称:
mynames<-c("df1_sub","df2_sub","df3_sub")
names(all_df_sub)<-mynames
我想使用 lapply
和 for
循环来做到这一点,但我不知道如何做,因为我被困在定义函数和子集数据帧列表之间的某个地方(我对此不是很有信心,我检查了较早的类似问题但没有成功)。这是我目前正在尝试的:
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"))
我有一个数据帧列表:
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
我想使用 lapply
和 for
循环来做到这一点,但我不知道如何做,因为我被困在定义函数和子集数据帧列表之间的某个地方(我对此不是很有信心,我检查了较早的类似问题但没有成功)。这是我目前正在尝试的:
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"))