我想制作一组从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)
}
任何帮助?
答案 0 :(得分:15)
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)]
答案 1 :(得分:2)
扩展dickoa的答案,将全局变量a
分配给r
(虽然我不明白为什么这比存储在列表中更好):
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