我有两个矢量,它们有一些共同的值,但长度不同:
x <- 1:10
# [1] 1 2 3 4 5 6 7 8 9 10
y <- c(3, 5, 8)
# [1] 3 5 8
我想将这两个向量组合成一个数据帧并产生以下结果:
data.frame(big = x,
small = c(NA, NA, 3, NA, 5, NA, NA, 8, NA, NA))
# big small
# 1 1 NA
# 2 2 NA
# 3 3 3
# 4 4 NA
# 5 5 5
# 6 6 NA
# 7 7 NA
# 8 8 8
# 9 9 NA
# 10 10 NA
答案 0 :(得分:5)
一种可能性是使用match
在长和短之间索引短向量,nomatch
参数设置为NA
(“要返回的值没有找到匹配的情况“)。
data.frame(big = x,
small = y[match(x, y, nomatch = NA)])