说我有一个载体
vec1 <- c(4,8,2,9)
和另一个载体
vec2 <- c("One","One","One","One","Two",Two","Two","Three","Four","Four")
我希望获得一个类似于
的数据框myData
V1 V2
4 "One"
4 "One"
4 "One"
4 "One"
8 "Two"
8 "Two"
8 "Two"
2 "Three"
9 "Four"
9 "Four"
这意味着myData
具有长度(vec2)行。如果它有帮助:vec2中的数据总是排列在一个块中 - 例如&#34;一个&#34;永远不会出现在1:4的其他行中。有没有办法实现这个目标?
谢谢
答案 0 :(得分:5)
您可以尝试使用match
:
data.frame(V1=vec1[match(vec2, unique(vec2))], V2=vec2, stringsAsFactors=F)
# V1 V2
# 1 4 One
# 2 4 One
# 3 4 One
# 4 4 One
# 5 8 Two
# 6 8 Two
# 7 8 Two
# 8 2 Three
# 9 9 Four
# 10 9 Four
使用rle
的另一个选项,感谢@DavidArenburg:
data.frame(V1=rep(vec1, rle(vec2)$lengths), V2=vec2, stringsAsFactors=F)