创建向量序列并替换一些元素

问题描述 投票:0回答:1

我想要这个作为我想要的向量

0,2,3,0,5,0,7,0,0

我使用了这些命令,但没有成功。

b <- c(1:9)
b
x <- replace(b,b==c(1,4,6,8,9),c(0,0,0,0,0)
x
g <- (gsub(c(1,4,6,8,9),c(0,0,0,0,0),b))

应用这些命令之前,请参见this

r
1个回答
0
投票

[当我们将b与使用==的向量进行比较时,我们在元素上进行比较,因此b[1]与1进行比较,b[2]与4进行比较,依此类推。由于length(c(1,4,6,8,9))短于length(b),因此这些值将被回收以匹配b的长度。

b == c(1,4,6,8,9)
#[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

警告消息:在b == c(1,4,6,8,9)中:较长的对象长度不是较短的对象长度的倍数

要比较多个值,我们需要%in%

b %in% c(1,4,6,8,9)
#[1]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE

以便我们可以使用replace like >>

replace(b,b %in% c(1,4,6,8,9),c(0, 0, 0, 0, 0))
#[1] 0 2 3 0 5 0 7 0 0

但是,replace可以接受位置向量,因此我们可以直接进行

replace(b, c(1,4,6,8,9), 0)
#[1] 0 2 3 0 5 0 7 0 0
© www.soinside.com 2019 - 2024. All rights reserved.