对于具有R中的离散值的循环

时间:2012-12-20 14:14:45

标签: r

我的向量具有以下形式的递增值:

a<-c(1,2,5,7,8,9,10,15,19...)

我想运行一个贯穿a。

值的for循环

我试过了:

for (i in 1:a)

但这忽略了缺少值,并且还会看到3,4等等。

我也尝试过:

for (i in 1:unique(a))

但是这会出现以下错误:

In 1:unique(a) :
 numerical expression has 1350 elements: only the first used

2 个答案:

答案 0 :(得分:8)

试试这个:

for ( i in a )

a已经是一个向量。您通常在1:N循环中看到的for构造用作创建从1到N的整数向量的简写。

答案 1 :(得分:2)

蒂姆指出了解决这个问题的正确方法。但是,根据您的尝试,您可能还想查看?seq?seq_along

1:a1:unique(a)都采用向量a(或unique(a))中的第一个元素,并将其用作序列中的“上限”。 (只要a的第一个元素可以强制转换为整数)。

例如

  a <- c("7", "hello", "world")
  1:a   # same as 1:7
  # [1] 1 2 3 4 5 6 7

  a <- c("hello", "7", "world")
  1:a   # same as 1:"hello"
  # ERROR

如果您使用seq_along(a),它将为您提供a的每个元素的索引。 (如果您需要将该索引用于其他一些计算,则非常有用)

 for (i in seq_along(a))
    cat(a[[i]], "\t is the", i,"element.\n")

 # hello     is the 1 element.
 # 7         is the 2 element.
 # world     is the 3 element.