R:将数据帧列表合并为单个数据帧,使用列表索引添加列

Jos*_*e R 6 r dataframe rbind do.call

问题与这一问题非常相似.它用于将数据帧列表组合成单个较长的数据帧.但是,我希望通过添加包含列表索引(id或source)的额外列来保留数据来自列表项的信息.

这是数据(来自链接示例的借用代码):

dfList <- NULL
set.seed(1)
for (i in 1:3) {
     dfList[[i]] <- data.frame(a=sample(letters, 5, rep=T), b=rnorm(5), c=rnorm(5))
}
Run Code Online (Sandbox Code Playgroud)

使用下面的代码提供了连接数据框,但不添加列表索引的列:

df <- do.call("rbind", dfList)
Run Code Online (Sandbox Code Playgroud)

如何在创建列以捕获列表中的原点时连接列表中的数据框?类似于以下内容:

在此输入图像描述

非常感谢你提前.

Dav*_*urg 8

试试data.table::rbindlistdevel verison吧

library(data.table) # v1.9.5+
rbindlist(dfList, idcol = "index")
#     index a           b            c
#  1:     1 g  1.27242932 -0.005767173
#  2:     1 j  0.41464143  2.404653389
#  3:     1 o -1.53995004  0.763593461
#  4:     1 x -0.92856703 -0.799009249
#  5:     1 f -0.29472045 -1.147657009
#  6:     2 k -0.04493361  0.918977372
#  7:     2 a -0.01619026  0.782136301
#  8:     2 j  0.94383621  0.074564983
#  9:     2 w  0.82122120 -1.989351696
# 10:     2 i  0.59390132  0.619825748
# 11:     3 m -1.28459935 -0.649471647
# 12:     3 w  0.04672617  0.726750747
# 13:     3 l -0.23570656  1.151911754
# 14:     3 g -0.54288826  0.992160365
# 15:     3 b -0.43331032 -0.429513109
Run Code Online (Sandbox Code Playgroud)