每次创建一个从 1 到 n 的数值向量,给定一个 ns 的向量
Create a numeric vector from 1 to n each time, given a vector of ns
从标题上看有点乱,但是结合下面的例子应该就很清楚了。
假设我有以下向量 a
:
a=c(3,10,6,7)
我想要一个向量 b
,这样它每次都涵盖从 1 到 a
中的每个数字,结果是:
b=c(1,2,3,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,1,2,3,4,5,6,7)
为了完成任务,如果 a
中的数字 ==1,我不想要单独的 1,而是 NA
。在这种情况下,如果 a
是:
a=c(3,10,6,1,7)
b
应该是:
b=c(1,2,3,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,NA,1,2,3,4,5,6,7)
我应该如何使用基本工具轻松地做到这一点?谢谢!
是的,sequence(a)
应该比 unlist(lapply(a, seq_len))
更受青睐。一旦你计算出长度为 1 的子序列从哪里开始,你就可以再分配 NA
:
a <- c(3, 10, 6, 1, 7)
replace(sequence(a), cumsum(a)[a == 1], NA)
## [1] 1 2 3 1 2 3 4 5 6 7
## [11] 8 9 10 1 2 3 4 5 6 NA
## [21] 1 2 3 4 5 6 7
从标题上看有点乱,但是结合下面的例子应该就很清楚了。
假设我有以下向量 a
:
a=c(3,10,6,7)
我想要一个向量 b
,这样它每次都涵盖从 1 到 a
中的每个数字,结果是:
b=c(1,2,3,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,1,2,3,4,5,6,7)
为了完成任务,如果 a
中的数字 ==1,我不想要单独的 1,而是 NA
。在这种情况下,如果 a
是:
a=c(3,10,6,1,7)
b
应该是:
b=c(1,2,3,1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,NA,1,2,3,4,5,6,7)
我应该如何使用基本工具轻松地做到这一点?谢谢!
是的,sequence(a)
应该比 unlist(lapply(a, seq_len))
更受青睐。一旦你计算出长度为 1 的子序列从哪里开始,你就可以再分配 NA
:
a <- c(3, 10, 6, 1, 7)
replace(sequence(a), cumsum(a)[a == 1], NA)
## [1] 1 2 3 1 2 3 4 5 6 7
## [11] 8 9 10 1 2 3 4 5 6 NA
## [21] 1 2 3 4 5 6 7