【发布时间】:2015-01-14 23:42:54
【问题描述】:
df1 <- data.frame(a = 1:2, b = 3:4)
df2 <- data.frame(a = 5:6, b = 7:8)
# A common method loses the origin of each row.
do.call("rbind", list(df1, df2))
## a b
## 1 1 3
## 2 2 4
## 3 5 7
## 4 6 8
# Whereas here, X1 records which data frame each row originated in.
library(plyr)
adply(list(df1, df2), 1)
## X1 a b
## 1 1 1 3
## 2 1 2 4
## 3 2 5 7
## 4 2 6 8
有没有其他方法可以做到这一点,也许更有效?
【问题讨论】:
-
我不知道是否更有效率,但如果
l <- list(df1, df2)是您的列表,您可能会使用Map创建索引,例如l <- Map(cbind, l, indx = seq_len(length(l))) -
reshape2::melt(list(df1,df2),1:2)是另一种选择 -
有没有办法使这个问题合法化,以便获得与其他问题大不相同的答案?
-
@nacnudus - 这是合法的!它仍然会留在这里,只是现在与另一个问题相关联,以便找到一个问题的人可以找到另一个问题。