gpt4 book ai didi

r - 从数值向量中提取多个范围

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

首先,我简化我的问题。我想从数字向量中提取某些范围。例如,从 1:20 中提取 3 个范围同时 :

  • 1 < x < 5
  • 8 < x < 12
  • 17 < x < 20

  • 因此,预期输出为 2, 3, 4, 9, 10, 11, 18, 19 .

    我尝试使用功能 findInterval()和控制参数 rightmost.closedleft.open这样做,但任何论据集都无法实现目标。
    x <- 1:20
    v <- c(1, 5, 8, 12, 17, 20)

    x[findInterval(x, v) %% 2 == 1]
    # [1] 1 2 3 4 8 9 10 11 17 18 19

    x[findInterval(x, v, rightmost.closed = T) %% 2 == 1]
    # [1] 1 2 3 4 8 9 10 11 17 18 19 20

    x[findInterval(x, v, left.open = T) %% 2 == 1]
    # [1] 2 3 4 5 9 10 11 12 18 19 20

    顺便说一下,条件也可以是这样的矩阵:
         [,1] [,2]
    [1,] 1 5
    [2,] 8 12
    [3,] 17 20

    我不想用 for如果不需要就循环。

    我很感激任何帮助。

    最佳答案

    我可能会使用 purrr::map2 或 Map,将您的下限和上限作为参数传递并使用自定义函数过滤您的数据集

    library(purrr)
    x <- 1:20
    lower_bounds <- c(1, 8, 17)
    upper_bounds <- c(5, 12, 20)
    map2(
    lower_bounds, upper_bounds, function(lower, upper) {
    x[x > lower & x < upper]
    }
    )

    关于r - 从数值向量中提取多个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53140303/

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