为什么变量进入长度为零的循环?

时间:2017-07-09 00:33:58

标签: r loops iterator

有人可以解释为什么即使对长度为零的变量执行循环?例如

listFunction<-function(listinput)
{
for (i in 1:length(listinput))
{listinput[i]<-listinput[i]+1
print("googats")
}

  listinput
}

listB<-c()

listFunction(listB)
[1] "googats"
[1] "googats"

> listB
NULL

为什么它迭代循环两次而不是根本不进入?

1 个答案:

答案 0 :(得分:1)

Per official documentation,for loop

  

for循环的语法是

for ( name in vector )    
    statement1 
     

其中vector可以是a   矢量或列表。对于向量中的每个元素,设置变量名称   到该元素的值,并评估statement1。在旁边   效果是循环后变量名仍然存在   总结并且它具有矢量的最后一个元素的值   评估循环。

因此,它会迭代每个元素。

在你的情况下,

for (i in 1:length(listinput))
{
    listinput[i]<-listinput[i]+1
    print("googats")
}

就像

for (i in 1:0)
{
    listinput[i]<-listinput[i]+1
    print("googats")
}

因为向量中有2个元素10,所以循环体将被迭代两次。