首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成数据帧和向量的组合

生成数据帧和向量的组合
EN

Stack Overflow用户
提问于 2012-11-28 09:10:02
回答 3查看 3.2K关注 0票数 7

我知道expand.grid是创建给定向量的所有组合。但是有没有办法通过将数据帧中的每一行作为唯一的来生成数据帧和向量的所有组合。例如,

代码语言:javascript
复制
df <- data.frame(a = 1:3, b = 5:7)
c <- 9:10

如何在不扩展df的情况下创建结合了dfc的新数据框

代码语言:javascript
复制
df.c:
a b c
1 5 9
2 6 9
3 7 9
1 5 10
2 6 10
3 7 10

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-28 09:15:03

当您的数据帧每行有两列以上时,这可能无法扩展,但您可以只对第一列使用expand.grid,然后在中对第二列使用merge

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2016-01-20 20:57:18

对我来说,最简单的方法是merge(df, as.data.frame(c))

代码语言:javascript
复制
  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
票数 13
EN

Stack Overflow用户

发布于 2012-11-28 09:37:10

你也可以这样做

代码语言:javascript
复制
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)))

代码语言:javascript
复制
rbindlist(Map(data.frame, c = 9:10, MoreArgs = list(a= 1:3,b=5:7)))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13596139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档