如何生成前4元素同向量a、后5元素取两向量最大值的向量
R语言按规则生成新向量
现有两个R向量:
a <- c(1,1,1,1,20,30,40,100,300) b <- c(2,2,2,2,100,0,0,120,5)
需要生成一个新向量,满足以下规则:
- 前4个元素与向量
a完全一致 - 后5个元素取向量
a和b对应位置的最大值
期望输出:
output <- c(1,1,1,1,100,30,40,120,300)
解决方案
方法1:分块拼接+pmax函数
利用pmax直接逐元素取最大值,再和a的前4个元素拼接,是最简洁的实现方式:
output <- c(a[1:4], pmax(a[5:9], b[5:9]))
方法2:ifelse条件判断
通过索引判断元素位置,统一生成结果,适合需要扩展规则的场景:
output <- ifelse(seq_along(a) <= 4, a, pmax(a, b))
方法3:直接赋值修改
先复制a的全部内容,再替换后5个位置的元素,逻辑直观易懂:
output <- a output[5:9] <- pmax(a[5:9], b[5:9])
内容的提问来源于stack exchange,提问作者Bella_18
相关产品推荐
相关产品推荐

