【问题标题】:Multiplying vectors in R of different lengthR中不同长度的向量相乘
【发布时间】:2013-07-14 14:58:01
【问题描述】:

我在 R 中有 2 个不同的向量。第一个中的条目只有 0 或 1。第二个向量的长度等于第一个向量中 1 的数量。我想要一个输出,它是第一个向量,但 1 被第三个向量的条目替换。例如

v1<-c(1,0,0,1,1)
v2<-c(2,3,4)

我想要:

v3<-c(2,0,0,3,4)

我的脚本中 v1 的长度为 10,我有超过 1000 个要计算,因此无法手动完成。任何想法都会很棒,谢谢!

强尼

【问题讨论】:

  • 我认为不需要乘法,因为 v1 是二进制的。 v1[v1 != 0] &lt;- v2。或者更好的@AnandaMahto 评论v1[v1 == 1] &lt;- v2
  • 效果很好,谢谢!
  • 但是如果第二个向量的长度不等于 1 的数量,Recycling 就可以工作。

标签: r vector cran vector-multiplication


【解决方案1】:

按照建议,您可以这样做:

v1[as.logical(v1)] <- v2

但它有覆盖v1的缺点。如果你不想这样,你可以这样做:

v3 <- replace(v1, as.logical(v1), v2)

或者这个比较晦涩的:

v3 <- `[<-`(v1, as.logical(v1), v2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2022-06-17
    • 2021-01-26
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多