如何在for循环中定义多个数据帧?

时间:2019-10-02 05:45:23

标签: r dataframe for-loop

例如说我有一些数据框DF。

DF有一列称为“目标”的列,它由因子变量目标名称组成,例如“ A”,“ B”,“ C”等。为简单起见,假设它只有这三个。

我想定义三个新的数据框,

例如,如果我这样做

for(i in levels(DF$Target)){
Dat.i=Dat%>%
filter(Target==i)
}

它将运行3次,但最终结果仍将是单个数据帧Dat.i,目标为C。

我希望有三个新的数据帧,分别称为Dat.A,Dat.B和Dat.C,分别对应于特定目标。 不是 Dat.i。

这怎么办?

1 个答案:

答案 0 :(得分:1)

并不是您想要的,但我认为做到这一点的最佳方法是使用列表

Dat <- list()
for(i in levels(DF$Target)){
  Dat[[i]] <- Dat%>%
           filter(Target==i)
}

然后,您可以执行Dat[["A"]]Dat[["B"]] ...

来访问数据框

如果确实要创建名为Dat.A,Dat.B等的不同对象,则可以使用

Dat <- list()
for(i in levels(DF$Target)){
  assign(paste0('Dat.',i), Dat%>%
                                filter(Target==i))
}