使用向量长度复制data.frame&;将每个元素作为新列传递

使用向量长度复制data.frame&;将每个元素作为新列传递,r,R,我有一个数据帧dd和一个向量vec。我想将数据帧乘以向量的长度。另外,我想将这个向量元素作为一个新列添加到dataframe中 # Dummy data dd<- data.frame(id = c(1,2,3,4,5)) vec <- c("a", "b", "d") 最初,我会获取length(vec),使用rep(vec,each=length(vec)),然后将此列添加到rbind(dd,dd,dd)。但是,如果需

我有一个数据帧
dd
和一个向量
vec
。我想将数据帧乘以向量的长度。另外,我想将这个向量元素作为一个新列添加到dataframe中

# Dummy data
dd<- data.frame(id = c(1,2,3,4,5))
vec <- c("a", "b", "d")
最初,我会获取
length(vec)
,使用
rep(vec,each=length(vec))
,然后将此列添加到
rbind(dd,dd,dd)
。但是,如果需要复制
dd
二十次,如何以更智能的方式执行此操作?

尝试:

vec <- data.frame(vec)
merge(dd,vec)

我们可以使用
交叉

library(tidyr)
crossing(dd, vec)

您可以像下面这样尝试
rep

transform(
  dd,
  vec = rep(vec, each = length(id))
)

   id vec
1   1   a
2   2   a
3   3   a
4   4   a
5   5   a
6   1   b
7   2   b
8   3   b
9   4   b
10  5   b
11  1   d
12  2   d
13  3   d
14  4   d
15  5   d

您似乎正在寻找
?expand.grid
transform(
  dd,
  vec = rep(vec, each = length(id))
)
   id vec
1   1   a
2   2   a
3   3   a
4   4   a
5   5   a
6   1   b
7   2   b
8   3   b
9   4   b
10  5   b
11  1   d
12  2   d
13  3   d
14  4   d
15  5   d