gpt4 book ai didi

r - 从两个向量创建多个系列的向量

转载 作者:行者123 更新时间:2023-12-02 09:23:08 26 4
gpt4 key购买 nike

我确信有一个 super 简单的解决方案,但我只是不知道它是什么。

我在 R 中有一个很长的单变量数据集。我可以识别整个过程中多个相关范围的开头和结尾,我只需要过滤掉其余部分。

给定一个向量 x:

> x <- c(2400:2600)

以及起点和终点的向量:

> startpoints <- c(1,11,101)
> endpoints <- c(3,13,103)

我需要返回 x 的子集,如下所示:

> x[c(1:3, 11:13, 101:103)]
[1] 2400 2401 2402 2410 2411 2412 2500 2501 2502

我已经尝试过这个:

> x[startpoints:endpoints]

但是 R 只是从每个向量中获取第一个值并返回该序列:

[1] 2400 2401 2402

...有一些警告

我的起点和终点向量的长度应始终相等,尽管它们的长度可能会随着不同的数据集而变化。

最佳答案

我们可以使用maply来获取“startpoints”、“endpoints”对应元素之间的序列,这可以对“x”向量进行子集化。

x[mapply(`:`, startpoints, endpoints)]
#[1] 2400 2401 2402 2410 2411 2412 2500 2501 2502

如果序列长度不同,正如@nicola提到的,maply返回一个list,所以我们需要unlist

x[unlist(mapply(`:`, startpoints, endpoints))]

关于r - 从两个向量创建多个系列的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40265712/

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