首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将向量分解为R中的连续群

如何将向量分解为R中的连续群
EN

Stack Overflow用户
提问于 2022-08-10 14:43:00
回答 2查看 70关注 0票数 2

我很好奇在R中是否有一种分解连续群向量的泛函方法。

例如,如果我有以下内容

代码语言:javascript
代码运行次数:0
运行
复制
# start with this
vec <- c(1,2,3,4,6,7,8,30,31,32)

# end with this
vec_vec <- list(c(1, 2, 3, 4),c(6,7,8),c(30,31,32))
print(vec_vec[1])

我只能通过一个for循环来想象这一点,在这个循环中,我可以计算以前值的差异,但是也许有更好的方法来解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-10 14:50:20

代码语言:javascript
代码运行次数:0
运行
复制
split(vec, vec - seq_along(vec)) |> unname()
# [[1]]
# [1] 1 2 3 4
# 
# [[2]]
# [1] 6 7 8
# 
# [[3]]
# [1] 30 31 32

减法seq_along(vec)将连续序列转化为单个值,我们可以通过它来实现split

票数 7
EN

Stack Overflow用户

发布于 2022-08-10 14:53:53

1)折叠包中有seqid:

代码语言:javascript
代码运行次数:0
运行
复制
library(collapse)
split(vec, seqid(vec))

给予:

代码语言:javascript
代码运行次数:0
运行
复制
$`1`
[1] 1 2 3 4

$`2`
[1] 6 7 8

$`3`
[1] 30 31 32

2)给出相同答案的基本方法是

代码语言:javascript
代码运行次数:0
运行
复制
split(vec, cumsum(c(TRUE, diff(vec) != 1)))

3)建议在cgwtools中的注释seqle中使用

代码语言:javascript
代码运行次数:0
运行
复制
library(cgwtools)
lens <- seqle(vec)$lengths
split(vec, rep(seq_along(lens), lens))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73308307

复制
相关文章

相似问题

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