使用向量长度复制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