我的向量具有以下形式的递增值:
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
答案 0 :(得分:8)
试试这个:
for ( i in a )
a
已经是一个向量。您通常在1:N
循环中看到的for
构造用作创建从1到N的整数向量的简写。
答案 1 :(得分:2)
?seq
和?seq_along
1:a
和1: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.