R语言向量索引变量运算不符合预期的原因咨询
滑动窗口索引异常的原因分析
先看你遇到的问题代码:
t <- c(1, 2, 3, 4, 5) i <- 1 t[i:i + 3]
这段代码返回4而非预期的1,2,3,4,核心原因是R语言的运算符优先级规则::(序列生成运算符)的优先级比+(加法运算符)更高。
所以i:i + 3的执行顺序是先算i:i(也就是1:1),得到单个值1,再执行1 + 3得到4,最后取t[4]自然就是4。
而你用中间变量j的写法:
t <- c(1, 2, 3, 4, 5) i <- 1 j <- i + 3 t[i: j]
这里先计算j = 1 + 3 = 4,再执行i:j(也就是1:4),所以能正确取到数组的前4个元素。
如果不想用中间变量,也可以给加法部分加括号改变优先级,写法如下:
t[i:(i + 3)]
这样会先计算括号里的i+3得到4,再执行1:4,同样能得到预期结果。
内容的提问来源于stack exchange,提问作者Anton Bocharov
相关产品推荐
相关产品推荐

