gpt4 book ai didi

r - 具有原始向量的所有不同值的最小子向量

转载 作者:行者123 更新时间:2023-12-04 10:08:02 25 4
gpt4 key购买 nike

假设我们有一个长度为 n 且具有 k 个不同值的向量。

{1, 4, 2, 2, 3, 4, 1, 1, 5, 2, 2}

我如何找出具有原始向量所有不同值的值的最小子集、单个元素的序列和频率的最小子集的开始和结束坐标(在原始向量上)?

对于我们的示例,子集将是
{2, 3, 4, 1, 1, 5}

开始和结束坐标将为 49 , 分别。

最佳答案

这里有一些可以完成这个任务的东西:首先我创建一个向量 index哪里index[k]等于要使用的索引数量(从 k 开始),直到至少一次拥有所有元素,并且等于 Inf如果情况并非如此。

# determining the unique elements of v
uniqueVals <- unique(v)
index <- numeric(length(v))

# helper function
myFun <- function(k){
helper <- vapply(seq(k, length(v)),
function(s) length(setdiff(uniqueVals, v[k:s])),
numeric(1))
return (ifelse(min(helper) == 0, which.min(helper)-1, Inf))
}

# indices in seq1 must be infinity as there are not enough values left
seq1 <- which(length(v) - seq_along(v) < length(uniqueVals))
index[seq1] <- Inf
# for the other indices we now use our helper function
index[seq(1, min(seq1)-1)] <- vapply(seq(1, min(seq1)-1), myFun, numeric(1))

# applying the above
startIndex <- which.min(index)
endIndex <- index[startIndex] + startIndex
v[startIndex:endIndex]
# yielding
[1] 2 3 4 1 1 5

哪里 v = c(1, 4, 2, 2, 3, 4, 1, 1, 5, 2, 2)对于任何给定的 k myFun将返回最小的数 n使得 v[k:n]包含 v 的每个元素.

关于r - 具有原始向量的所有不同值的最小子向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317387/

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