首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在向量中插入缺失的自然数

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

Stack Overflow用户
提问于 2019-07-09 08:00:58
回答 3查看 193关注 0票数 2

我有一个数据帧列

代码语言:javascript
复制
df$col1=(1,2,3,4,5,6,7,8,9,...,500000)

和向量

代码语言:javascript
复制
vc<-c(1,2,4,5,7,8,10,...,499999)

如果我比较这两个向量,第二个向量有一些缺失的值,我如何可以插入丢失值的0,例如,第二个向量,我想成为

代码语言:javascript
复制
vc<-c(1,2,0,4,5,0,7,8,9,10,...,499999,0)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-09 08:06:40

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

代码语言:javascript
复制
v_out <- df$col1
v_out[!(v_out %in% vc)] <- 0
v_out

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

数据

代码语言:javascript
复制
df$col1 <- c(1:10)
vc <- c(1,2,4,5,7,8,10)
票数 1
EN

Stack Overflow用户

发布于 2019-07-09 08:05:16

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

输入

代码语言:javascript
复制
vc <- c(1,2,4,5,7,8,10)
x <- 1:15

结果

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-07-09 08:20:58

一种更隐秘,但可能更快的单列替代方案(使用Tim的数据):

代码语言:javascript
复制
`[<-`(numeric(max(df$col1)),vc,vc)
#[1]  1  2  0  4  5  0  7  8  0 10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56947931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档