【问题标题】:Creating a sequence of vector and replacing some elements创建一个向量序列并替换一些元素
【发布时间】:2020-02-02 10:08:37
【问题描述】:

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

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

【问题讨论】:

  • replace(b, c(1,4,6,8,9), 0)
  • @RonakShah 谢谢。你能告诉我 ''b=='' 是如何在那里产生问题的吗?你能帮我用 gsub 命令吗?
  • 如果你想替换数字gsub不是正确的功能。
  • 试试:b[b %in% c(1,4,6,8,9)] &lt;- 0.

标签: r


【解决方案1】:

当我们将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

这样我们就可以使用replacelike

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多