我知道expand.grid是创建给定向量的所有组合。但是有没有办法通过将数据帧中的每一行作为唯一的来生成数据帧和向量的所有组合。例如,
df <- data.frame(a = 1:3, b = 5:7)
c <- 9:10如何在不扩展df的情况下创建结合了df和c的新数据框
df.c:
a b c
1 5 9
2 6 9
3 7 9
1 5 10
2 6 10
3 7 10谢谢!
发布于 2012-11-28 09:15:03
当您的数据帧每行有两列以上时,这可能无法扩展,但您可以只对第一列使用expand.grid,然后在中对第二列使用merge。
df <- data.frame(a = 1:3, b = 5:7)
c <- 9:10
combined <- expand.grid(a=df$a, c=c)
combined <- merge(combined, df)
> combined[order(combined$c), ]
a c b
1 1 9 5
3 2 9 6
5 3 9 7
2 1 10 5
4 2 10 6
6 3 10 7发布于 2016-01-20 20:57:18
对我来说,最简单的方法是merge(df, as.data.frame(c))
a b c
1 1 5 9
2 2 6 9
3 3 7 9
4 1 5 10
5 2 6 10
6 3 7 10发布于 2012-11-28 09:37:10
你也可以这样做
do.call(rbind,lapply(9:10, function(x,d) data.frame(d, c=x), d=df)))
# or using rbindlist as a fast alternative to do.call(rbind,list)
library(data.table)
rbindlist(lapply(9:10, function(x,d) data.frame(d, c=x), d=df)))或
rbindlist(Map(data.frame, c = 9:10, MoreArgs = list(a= 1:3,b=5:7)))https://stackoverflow.com/questions/13596139
复制相似问题