用于循环唯一值

use*_*765 12 r

是否可以用离散级别编写for循环?

我有一个以下形式的矢量:

a<-c(1,1,1,1,1,3,3,5,11,18 ....1350) 
Run Code Online (Sandbox Code Playgroud)

它是一个增加的系列,但不遵循任何逻辑顺序;

我想使用级别(a)作为参数运行for循环:

for i in 1:levels(a)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

In 1:levels_id :
 numerical expression has 1350 elements: only the first used
Run Code Online (Sandbox Code Playgroud)

Mat*_*eck 23

你最初的错误是你通过循环遍历向量的元素来混淆索引的循环.

如果要循环遍历矢量的唯一元素,请使用:

for(i in unique(a))
Run Code Online (Sandbox Code Playgroud)

我认为这就是你想要做的.但另一种方法是循环遍历唯一向量的索引:

for(i in 1:length(unique(a))){
    this.a <- unique(a)[i]
}
Run Code Online (Sandbox Code Playgroud)

这两个是等价的,但第二个也可以让你知道当前的索引(如果你需要的话).