【发布时间】:2017-07-11 14:14:49
【问题描述】:
我创建了一个数据框列表。 我正在尝试使用 mutate 和 select 命令更改原始数据帧。我从所有数据框创建了一个列表
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
【问题讨论】:
-
dplyr 上下文中的突变不是就地修改内存而言的突变。在这种情况下,这是一种转变。您必须将转换结果分配给对象,因此请尝试
m[[i]] = mutate(i , date = ...。 -
尝试设计一个函数并使用
lapply将其应用到您的列表中。它可能会更有效率。 -
您可能还想以这种方式创建您的
m对象:m = list(noquote(paste0(rep("traffic_", 12), 2005:2016)))而不是写所有这些流量词。 -
如果您能提供可重现的示例数据集,并显示代码以加载
dplyr和lubridate包,那就太好了。 -
stackoverflow.com/questions/44208873/… 希望链接对您有所帮助
标签: r list loops dataframe dplyr