gpt4 book ai didi

r - 从满足给定条件的数值向量中找出长度为 k 的连续子向量

转载 作者:行者123 更新时间:2023-12-04 11:41:13 25 4
gpt4 key购买 nike

我在 R 中有一个数字向量,比如

v= c(2,3,5,6,7,6,3,2,3,4,5,7,8,9,6,1,1,2,5,6,7,11,2,3,4)

现在,我必须从中找出大小为 4 的所有连续子向量,条件是子向量的每个元素必须大于 2,并且所有子向量必须不相交,即非两个子向量中的一个可以包含相同的索引元素。所以我的输出将是:

(3,5,6,7),(3,4,5,7),(5,6,7,11)

已编辑:用于说明目的的其他示例:for,

v=c(3,3,3,3,1,3,3,3,3,3,3,3,3) 

输出将是:

(3,3,3,3), (3,3,3,3),(3,3,3,3).

为了,

v= c(2,3,5,5,7,6,3,2,3,4,5,7,8,9,6,1,1,2,5,6,7,11,2,3,4) 

输出将是

(3,5,5,7),(3,4,5,7),(5,6,7,11)

输出的第二个条件只是说如果我们找到任何子数组就说 (v[m],v[m+1],v[m+2],v[m+3]) 每个元素都大于 > 2 然后它将进入我的输出,下一个子数组只能从 v[m+4] 开始(如果可能)

最佳答案

此解决方案使用 embed() 创建滞后矩阵,然后从该矩阵中提取所需的行:

v <- c(2,3,5,6,7,6,3,2,3,4,5,7,8,9,6,1,1,2,5,6,7,11,2,3,4)

e <- embed(v, 4)
ret <- which(
apply(e, 1, function(x)all(x > 2)) &
apply(e, 1, function(x)length(unique(x)) == 4)
)
rows <- ret[c(1, 1 + which(diff(ret) > 4))]

e[rows, 4:1]

[,1] [,2] [,3] [,4]
[1,] 3 5 6 7
[2,] 3 4 5 7
[3,] 5 6 7 11

关于r - 从满足给定条件的数值向量中找出长度为 k 的连续子向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com