提取高密度/低密度矢量的第一个值

时间:2014-04-23 15:33:14

标签: r vector extract

我遇到了一个简单的任务,我真的希望有人可以帮我解决这个问题。

我有一个值相互接近的向量,两者之间有明显的间隙。我需要的是这个向量最小化到一个矢量,其中包含所有高密度系列的每个第一个值。

示例:

original_vector <- c(0.001,0.002,0.003,0.004,0.1001,0.1002,0.1003,0.1004,0.1005,
                     0.5003,0.5004)
wanted_vector <- c(0.001,0.1001,0.5003)

有人知道如何将原始矢量转换为所需的矢量吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您当然首先需要定义您认为低密度和高密度的东西。

假设您可以决定连续元素tol之间的截止距离,在此之下,两个连续元素被认为是密集的,您可以使用以下内容:

f <- function(x, tol) {
    x[tol < diff(c(-Inf, x))]
}


original_vector <- c(0.001,0.002,0.003,0.004,0.1001,0.1002,0.1003,0.1004,0.1005,
                     0.5003,0.5004)

f(original_vector, tol = 0.002)
# [1] 0.0010 0.1001 0.5003