within()函数中的“==”命令会生成新变量吗?

时间:2014-02-03 07:57:03

标签: r

重现问题的一些代码:

data(iris)
print(iris)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
               ...The rest is abbreviated...

#循环,然后使用“==”来终止它。

iris2=within(iris,{
  for(i in 1:150){
    if(i==123) break
  }
})

print(iris2)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species   i
1            5.1         3.5          1.4         0.2     setosa 123
2            4.9         3.0          1.4         0.2     setosa 123
3            4.7         3.2          1.3         0.2     setosa 123
4            4.6         3.1          1.5         0.2     setosa 123
5            5.0         3.6          1.4         0.2     setosa 123
                     ...abbreviated...

显示了一个名为i的附加列,怎么样?

1 个答案:

答案 0 :(得分:2)

for循环在调用环境中创建一个变量来进行计数。分配within根据您的数据创建的环境的变量将添加到该环境中。将for循环置于within调用之外,或在退出i调用之前将NULL的值设置为within,例如:

if(i==123) {i<-NULL;break}