使用数据框列表时将列表名称放入数据框列

Put list name into dataframe column when working with list of dataframes

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

如果列表开始时看起来像这样 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

如果您的数据以列表开头,因此您在搜索词中包含了 "list",那么恭喜您,您找到了正确的问题。这里的答案很简单也很棒。

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

试试这个:

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))

您可以使用 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