在处理数据帧列表时,将列表名称放入dataframe列

时间:2018-02-05 22:37:17

标签: r purrr

我有一个数据框列表,每个列表的名称都有需要传递给列的信息(我将绑定所有数据帧)。有没有办法获取此列表名称并使其成为列中的标签?

如果列表以head(my_list)

开头看起来像这样
$day0005
# A tibble: 24 x 4
TSOIL1   lon   lat  TIME
<dbl> <dbl> <dbl> <dbl>
 1    265 -95.8  45.7   0  
 2    265 -95.8  45.7  60.0
 3    265 -95.8  45.7 120  
 4    265 -95.8  45.7 180  
 5    265 -95.8  45.7 240  

我希望每个看起来像

$day0005
# A tibble: 24 x 4
TSOIL1   lon   lat  TIME     day
<dbl> <dbl> <dbl> <dbl>     day0005
 1    265 -95.8  45.7   0   day0005
 2    265 -95.8  45.7  60.0 day0005
 3    265 -95.8  45.7 120   day0005
 4    265 -95.8  45.7 180   day0005
 5    265 -95.8  45.7 240   day0005

如果您的数据在列表中开始,那么您将包含&#34; list&#34;在您的搜索字词中,恭喜您,您已经找到了正确的问题。这里的答案很简单,很棒。

如果您从一堆数据帧开始,您可能还想查看与此类似的问题。他们将向您展示如何将一堆数据帧转换为数据帧列表。然后回到这里寻找与识别和绑定所有行相关的最简单的答案。

2 个答案:

答案 0 :(得分:1)

您可以使用dplyr::bind_rows()

执行此操作
library(dplyr)
mylist <- list(x = data.frame(a = 1:10), 
               y = data.frame(a = 11:20))

mydf <- mylist %>% 
  bind_rows(.id = "dfname")

mydf

   dfname  a
1       x  1
2       x  2
3       x  3
4       x  4
5       x  5
6       x  6
7       x  7
8       x  8
9       x  9
10      x 10
11      y 11
12      y 12
13      y 13
14      y 14
15      y 15
16      y 16
17      y 17
18      y 18
19      y 19
20      y 20

答案 1 :(得分:0)

试试这个:

dl <-list(data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11),data.frame(a=1:10,b=11:20,c=20:11))
names(dl) <- c("one","two","three","four")
dl <- Map(cbind,dl,"names" = names(dl))