假设我有一个向量:
v <- c(a=1, b=2, c=3, d=4)
v
a b c d
1 2 3 4
我想创建一个新的向量new_v
,这样:如果可以在v
中找到一个元素,它等于v
中的值,否则赋值为0
.例如,v
中不存在e
、f
和g
,它们都被指定为0,因此:
> new_v
a b c d e f g
1 2 3 4 0 0 0
我知道每个元素可以创建ifelse
个.由于我有一个长向量,我想知道创建它的最佳方法是什么.
假设我有一个向量:
v <- c(a=1, b=2, c=3, d=4)
v
a b c d
1 2 3 4
我想创建一个新的向量new_v
,这样:如果可以在v
中找到一个元素,它等于v
中的值,否则赋值为0
.例如,v
中不存在e
、f
和g
,它们都被指定为0,因此:
> new_v
a b c d e f g
1 2 3 4 0 0 0
我知道每个元素可以创建ifelse
个.由于我有一个长向量,我想知道创建它的最佳方法是什么.
将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