R 生成一个递增的序列,如112123412345

R 生成一个递增的序列,如112123412345,r,sequence,seq,R,Sequence,Seq,基本上我想生成一个序列,比如: n为2,序列为112 n为3,序列为112123 n是5,序列是112123412345 我确实想出了一个解决办法 n=5 seq=1 for (i in 2:n){ seq=c(seq,rep(1:n,len=i)) } 我想知道是否有一种方法可以在没有for循环的情况下完成这项工作?这里有一种可能性: n<-5 unlist(lapply(1:n,function(x) 1:x)) ## [1] 1 1 2 1 2 3 1 2 3 4 1 2 3

基本上我想生成一个序列,比如:

n为2,序列为112
n为3,序列为112123
n是5,序列是112123412345

我确实想出了一个解决办法

n=5
seq=1
for (i in 2:n){
  seq=c(seq,rep(1:n,len=i))
}

我想知道是否有一种方法可以在没有for循环的情况下完成这项工作?

这里有一种可能性:

n<-5
unlist(lapply(1:n,function(x) 1:x))
## [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5

n使用
顺序

> sequence(1:5)
 [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5

它会做一些类似于:

do.call('c', sapply(1:5, seq, from = 1))
# [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
我把这个问题误读为“如何生成那个恼人的拼图序列”,它是这样的 1,11,21,1112,3112,... :-). 所以我想我最好写一个解决方案

puzseq<-function(seqlen) {
theseq<- list(1)
for( j in 2:seqlen) {

thetab<-table(theseq[[j-1]])
theseq[[j]]<-unlist( sapply( 1:length(thetab), function(k) c(thetab[k], as.numeric(names(thetab)[k])) ))
}
return(theseq)
}

puzseqmore functional,将是
unlist(lapply(seq(n),seq))
+1,因为
sequence
被定义为
function(nvec)unlist(lapply(nvec,seq_len))
。谢谢大家!虽然这个问题可以通过sequence()解决,但实际上这是我的教程实践中的一个问题,询问如何使用Lappy()而不是loop做一些事情,我想这就是教程问题所要寻找的。如果你看一下序列代码,你会发现答案有多相似。在做
sequence(sequence(5))
:-)@Chris:一定要阅读帮助文件中的“请参阅”部分
?seq
提到了
序列
。@JoshuaUlrich谢谢你,我想我真的需要养成正确阅读帮助页面的习惯,我确实去了那里,但除了参数和示例之外,什么都忽略了。这很难阅读;代码格式不标准,也不一致。@Clayton Stanley您能澄清一下您发现的不清楚的地方吗?循环内容最好不要缺少缩进!