【问题标题】:How to assign elements to zero if not in a vector in R?如果不在 R 中的向量中,如何将元素分配为零?
【发布时间】:2022-06-15 00:48:21
【问题描述】:

假设我有一个向量:

v <- c(a=1, b=2, c=3, d=4)
v
a b c d 
1 2 3 4 

我想创建一个新的向量new_v,这样:如果一个元素可以在v中找到,则它等于v中的值,否则分配给0。例如efgv中不存在,它们都被赋值为0,这样:

> new_v
a b c d e f g 
1 2 3 4 0 0 0 

我知道它可以由ifelse 为每个元素创建。由于我有一个长向量,我想知道创建它的最佳方法是什么。

【问题讨论】:

  • setdiff 可能会更好v[setdiff(letters[1:7], names(v))] &lt;- 0

标签: r


【解决方案1】:

setdiff 与向量的names 一起使用,并将它们分配给0 而不是条件表达式

v[setdiff(letters[1:7], names(v))] <- 0

-输出

> v
a b c d e f g 
1 2 3 4 0 0 0 

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2023-03-27
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2011-12-15
    • 2022-08-03
    相关资源
    最近更新 更多