在循环中的数据帧列表中变异

时间:2017-07-11 14:14:50

标签: r list loops dataframe mutate

我创建了一个数据框列表。 我尝试使用 mutate 选择命令更改原始数据框。我从所有数据框中创建了一个列表

m <- as.list(paste0(rep("traffic_", 12), 2005:2016))

我试图运行下一个命令:但它仍然不适合我。

foreach(x=iter(m)) %do% { assign(x, mutate(x , date = make_datetime(shana, hodesh, taarich, shaa)) %>%
                               select( -shana, -hodesh, -taarich, -shaa)) }

这是原始数据框之一

> traffic_2016
  shana kvish keta maslul hodesh taarich yom shaa nefah status
1      2016     1   10      1      9      11   1    0  1710     NA
2      2016     1   10      1      9      11   1    1   934     NA
3      2016     1   10      1      9      11   1    2   800     NA
4      2016     1   10      1      9      11   1    3   637     NA
5      2016     1   10      1      9      11   1    4   588     NA
6      2016     1   10      1      9      11   1    5   951     NA
7      2016     1   10      1      9      11   1    6  2312     NA
8      2016     1   10      1      9      11   1    7  3769     NA
9      2016     1   10      1      9      11   1    8  3348     NA
10     2016     1   10      1      9      11   1    9  2788     NA
11     2016     1   10      1      9      11   1   10  2879     NA

1 个答案:

答案 0 :(得分:1)

您想要编辑每个原始数据框:

mtcars1 <- mtcars
mtcars2 <- mtcars

m <- list("mtcars1","mtcars2")

您可以使用assign按名称编辑数据。我使用get来编辑实际数据:

library(iterators)
library(foreach)
library(dplyr)
foreach(x=iter(m)) %do% { assign(x, mutate(get(x), mpg=mpg+1) %>% select(mpg,cyl)) }

使用您的mutate

foreach(x=iter(m)) %do% { assign(x, mutate(get(x) , date = make_datetime(shana, hodesh, taarich, shaa)) %>% select( -shana, -hodesh, -taarich, -shaa)) }