R 生成一个递增的序列,如112123412345
基本上我想生成一个序列,比如: n为2,序列为112R 生成一个递增的序列,如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为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您能澄清一下您发现的不清楚的地方吗?循环内容最好不要缺少缩进!