在向量中插入缺失的自然数

时间:2019-07-09 08:00:58

标签: r vector

我有一个数据框列

df$col1=(1,2,3,4,5,6,7,8,9,...,500000)

和向量

vc<-c(1,2,4,5,7,8,10,...,499999)

如果我比较两个向量,则第二个向量具有一些缺失值,我如何将其插入缺失值的位置0s,例如,我想成为的第二个向量

vc<-c(1,2,0,4,5,0,7,8,9,10,...,499999,0)

3 个答案:

答案 0 :(得分:2)

您可以使用matchreplace(感谢@RonakShah)

输入

vc <- c(1,2,4,5,7,8,10)
x <- 1:15

结果

out <- replace(tmp <- vc[match(x, vc)], is.na(tmp), 0L)
out
# [1]  1  2  0  4  5  0  7  8  0 10  0  0  0  0  0

答案 1 :(得分:1)

您可以尝试使用包含所有值的较大向量作为模板,然后将零个与第二个较小向量不匹配匹配的值赋零:

v_out <- df$col1
v_out[!(v_out %in% vc)] <- 0
v_out

[1]  1  2  0  4  5  0  7  8  0 10

数据

df$col1 <- c(1:10)
vc <- c(1,2,4,5,7,8,10)

答案 2 :(得分:1)

一种更神秘,但可能更快的单线替代方法(使用蒂姆的数据):

`[<-`(numeric(max(df$col1)),vc,vc)
#[1]  1  2  0  4  5  0  7  8  0 10