r - 在使用 ldpy 将数据帧列表合并为一个之前/之后向数据帧的每一行添加标识符

标签 r list dataframe

我有基于此的后续问题 one .

我用过df <- ldply(listOfDataFrames, data.frame)将 12000 多个数据帧的列表合并为一个,但由于列表中的每个数据帧都没有标识符,我需要知道哪个数据帧来自哪个列表。

我知道我可以使用 ldply(test,nrow)创建另一个数据框,然后使用 for-loop添加列表名称,但似乎有点慢,不知道有没有更快的方法。谢谢。

最佳答案

我没有适合你的 plyr 解决方案,但这是我通常在 base R 中做的。

> a <- list(data.frame(a=runif(5), b=runif(5)), data.frame(a=runif(5), b=runif(5)), data.frame(a=runif(5), b=runif(5)))
> a
[[1]]
          a         b
1 0.2994804 0.2681471
2 0.3223587 0.3663688
3 0.2662296 0.2941038
4 0.8041538 0.2991932
5 0.6860321 0.0872916

[[2]]
           a          b
1 0.84966749 0.01750988
2 0.19320093 0.05274077
3 0.63218616 0.77222663
4 0.00773626 0.53163878
5 0.19965884 0.50740204

[[3]]
          a          b
1 0.2915164 0.65905466
2 0.5676906 0.01094598
3 0.5689014 0.58943383
4 0.7937997 0.75535177
5 0.2304010 0.84012697

> indices <- lapply(a, nrow)
> a.all <- do.call(rbind, a)
> a.all$index <- rep(1:length(a), indices)
> a.all
            a          b index
1  0.29948042 0.26814714     1
2  0.32235868 0.36636880     1
3  0.26622956 0.29410382     1
4  0.80415381 0.29919316     1
5  0.68603208 0.08729160     1
6  0.84966749 0.01750988     2
7  0.19320093 0.05274077     2
8  0.63218616 0.77222663     2
9  0.00773626 0.53163878     2
10 0.19965884 0.50740204     2
11 0.29151644 0.65905466     3
12 0.56769063 0.01094598     3
13 0.56890138 0.58943383     3
14 0.79379972 0.75535177     3
15 0.23040098 0.84012697     3

关于r - 在使用 ldpy 将数据帧列表合并为一个之前/之后向数据帧的每一行添加标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974876/

相关文章:

mysql - 将 R 的数据框拟合到 Mysql 表中

r - 在 R 中的 ggplot2 中一起使用 stat_function 和 facet_wrap

c# - 分隔列表的更快方法

包含 haskell 中列表成员的第二个元素的列表

r - 如何根据列在 ddply 中传递值?

python - 对 Pandas 数据框中的所有值求和的最佳方法是什么?

python - 通过列名称和观察结果比较数据框

R Shiny : eventReactive with two controls

R 传单 : Passing popupOptions when adding Polygons.

c - 链表循环