R语言seq函数两种调用方式输出不一致,原因何在?
R语言seq函数两种调用结果差异的原因
这两种调用的结果不一样,核心在于运算符优先级和seq函数的参数处理逻辑:
seq(-1, 1):直接向seq传入两个独立参数——起始值-1和终止值1,步长默认取1,因此生成从-1到1、步长为1的序列,输出结果为-1 0 1。seq(-1:1):R语言中,冒号:的运算优先级高于函数调用,所以会先执行-1:1,得到序列-1 0 1。此时seq只接收到这一个长度为3的向量参数,当seq仅传入单个向量时,它会生成从1到该向量长度的整数序列(等价于seq_along(-1:1)),因此输出结果为1 2 3。
如果想通过冒号表达式实现和seq(-1,1)相同的效果,更直接的方式还是使用seq(-1, 1);非要用冒号的话,得用括号明确逻辑,比如seq(from = (-1):1[1], to = (-1):1[3]),但完全没必要多此一举。
内容的提问来源于stack exchange,提问作者Gaurav Shukla
相关产品推荐
相关产品推荐

