首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成时间序列

生成时间序列
EN

Stack Overflow用户
提问于 2015-04-15 10:14:34
回答 1查看 95关注 0票数 1

假设我有一个向量c("m1","m2","m3","m4")

我需要生成各种可能的时间序列。上面的输出应该类似于

代码语言:javascript
复制
c("m1","m1 m2","m1 m2 m3","m1 m2 m3 m4","m2","m2 m3","m2 m3 m4","m3","m3 m4","m4")

我希望代码避免任何循环,因为我需要对一个大数据运行它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-15 12:59:49

combn与指定的函数一起使用,包括单列和排序:

代码语言:javascript
复制
Paste <- function(x) paste(m[x[1]:x[2]], collapse = " ")
sort(c(m, combn(length(m), 2, FUN = Paste)))

给予:

代码语言:javascript
复制
[1] "m1"          "m1 m2"       "m1 m2 m3"    "m1 m2 m3 m4" "m2"         
[6] "m2 m3"       "m2 m3 m4"    "m3"          "m3 m4"       "m4"   

如果订单不重要,则省略sort

备注:如果我们更喜欢字符向量列表(而不是粘贴字符串的向量),那么这个稍微简单一些的代码将提供一个未排序的列表:

代码语言:javascript
复制
enlist <- function(x) list(m[x[1]:x[2]])
L <- c(m, combn(length(m), 2, FUN = enlist))

给予:

代码语言:javascript
复制
> str(L)
List of 10
 $ : chr "m1"
 $ : chr "m2"
 $ : chr "m3"
 $ : chr "m4"
 $ : chr [1:2] "m1" "m2"
 $ : chr [1:3] "m1" "m2" "m3"
 $ : chr [1:4] "m1" "m2" "m3" "m4"
 $ : chr [1:2] "m2" "m3"
 $ : chr [1:3] "m2" "m3" "m4"
 $ : chr [1:2] "m3" "m4"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29647550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档