R语言序列计算遇不符合预期0值时自动加1的实现问询
解决方案
你可以使用R自带的向量化条件判断函数ifelse()直接实现需求,不需要编写循环逻辑,代码简洁且执行效率更高:
n <- length(1:10) l <- seq(n - 2) + 1 ov <- ifelse(l == 2, (l - 2) + 1, l - 2)
运行后得到的ov取值为1,1,2,3,4,5,6,7,完全符合计算要求。
如果后续需要修改的异常场景更多,也可以先计算基础值再针对性修改对应位置的结果,写法如下:
n <- length(1:10) l <- seq(n - 2) + 1 ov <- l - 2 # 仅修改l=2时的ov值 ov[l == 2] <- ov[l == 2] + 1
两种写法的运行结果完全一致。
内容的提问来源于stack exchange,提问作者Daniel James
相关产品推荐
相关产品推荐

