假设我有一个向量:

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中不存在efg,它们都被指定为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 

R相关问答推荐

重复组的运行计数

如何通过Exams2黑板对非整数字的问题进行评分

如何在列表的子元素上使用setName

从具有随机模式的字符串中提取值

如何在R中正确对齐放射状图中的文本

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

检测(并替换)字符串中的数学符号

如何按排序顺序打印一个框架中所有精确的唯一值?

格点中指数、双曲和反双曲模型曲线的正确绘制

在连续尺度上转置标签[瀑布图,R]

解析R函数中的变量时出现的问题

根据1个变量绘制 colored颜色 发散的 map ,由另一个变量绘制饱和度,ggplot2不工作

如何识别倒排的行并在R中删除它们?

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

如何使用前缀作为匹配来连接数据帧?

在R中使用列表(作为tibble列)进行向量化?

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

是否可以将线性模型的p值添加到tbl_summary中

变异以按组从其他列创建具有最大和最小值的新列

如何将图例文本添加到图例符号中