4

我想制作一组从 x 到 20 的序列,其中 x = c(2:19)。本质上,我想要这个,但不必这样做:

a = seq(2, 20)
b = seq(3, 20)
...
q = seq(18, 20)
r = seq(19, 20)

> a
 [1]  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> b
 [1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
...
> q
[1] 18 19 20
> r
[1] 19 20`

我已经尝试使用 for 循环,但我无法完成替换:

a = c(2:20)
b = numeric()
for (i in 1:19){
b = seq(a[i]:20)
}

有什么帮助吗?

4

2 回答 2

16
sapply(2:19, seq, to = 20)

[[1]]
 [1]  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[2]]
 [1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[3]]
 [1]  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[4]]
 [1]  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[5]]
 [1]  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[6]]
 [1]  7  8  9 10 11 12 13 14 15 16 17 18 19 20

[[7]]
 [1]  8  9 10 11 12 13 14 15 16 17 18 19 20

[[8]]
 [1]  9 10 11 12 13 14 15 16 17 18 19 20

[[9]]
 [1] 10 11 12 13 14 15 16 17 18 19 20

[[10]]
 [1] 11 12 13 14 15 16 17 18 19 20

[[11]]
[1] 12 13 14 15 16 17 18 19 20

[[12]]
[1] 13 14 15 16 17 18 19 20

[[13]]
[1] 14 15 16 17 18 19 20

[[14]]
[1] 15 16 17 18 19 20

[[15]]
[1] 16 17 18 19 20

[[16]]
[1] 17 18 19 20

[[17]]
[1] 18 19 20

[[18]]
[1] 19 20

如果要保存对象并为每个元素命名

res <- sapply(2:19, seq, to = 20)
names(res) <- letters[1:length(res)]
于 2012-09-11T18:11:33.520 回答
2

扩展 dickoa 的答案以将全局变量分配ar(尽管我不明白为什么这比存储在列表中更可取):

mapply(FUN=assign,x=letters[1:18],value=sapply(2:19, seq, to = 20),MoreArgs=list(envir=.GlobalEnv))

给出:

> a
 [1]  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> b
 [1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> q
[1] 18 19 20
> r
[1] 19 20
于 2012-09-11T19:03:04.520 回答