我可以根据元素的数量将一个向量子化为子向量吗?

问题描述 投票:0回答:1

我想根据我提供的元素数量将长度为 30 的向量分成 5 个子向量。 subvector1 必须包含 17 个元素,subvector2 必须包含 5 个元素,subvector3 必须包含 1 个元素,subvector 4 必须包含 5 个元素,subvector 5 必须包含 2 个元素。 我不想改变顺序,这意味着 subvector1 将包含原始向量的前 17 个元素,subvector2 将包含原始向量的第 18:22 个元素,依此类推...

data_controllo<- c("2018-09-24 UTC","2018-10-22 UTC", "2018-11-21 UTC", "2018-12-19 UTC", "2019-01-30 UTC", "2019-03-01 UTC", "2019-03-27 UTC", "2019-04-29 UTC","2019-05-31 UTC", "2019-07-30 UTC", "2019-08-28 UTC", "2019-09-26 UTC", "2019-10-22 UTC","2019-11-20 UTC","2019-12-16 UTC", "2020-01-21 UTC", "2020-02-17 UTC", "2020-04-21 UTC", "2020-05-19 UTC", "2020-06-16 UTC", "2020-07-14 UTC", "2020-08-18 UTC", "2020-09-16 UTC", "2020-10-13 UTC", "2020-12-09 UTC", "2021-01-12 UTC", "2021-02-12 UTC", "2021-03-11 UTC", "2021-04-09 UTC", "2021-05-10 UTC")

subset(data_controllo, ...) # i cannot continue
#probably i have to create a vector containing the number of elements i would have for the new vectors?! like

elements_perVector<-c(17, 5, 1, 5,2)
# THIS IS WHAT I EXPECT
> subvector1
 [1] "2018-09-24 UTC" "2018-10-22 UTC" "2018-11-21 UTC" "2018-12-19 UTC" "2019-01-30 UTC" "2019-03-01 UTC" "2019-03-27 UTC" "2019-04-29 UTC"
 [9] "2019-05-31 UTC" "2019-07-30 UTC" "2019-08-28 UTC" "2019-09-26 UTC" "2019-10-22 UTC" "2019-11-20 UTC" "2019-12-16 UTC" "2020-01-21 UTC"
[17] "2020-02-17 UTC"
> subvector2
 [1] "2020-04-21 UTC" "2020-05-19 UTC" "2020-06-16 UTC" "2020-07-14 UTC" "2020-08-18 UTC"
> subvector3
 [1] "2020-09-16 UTC"
> subvector4
 [1] "2020-10-13 UTC" "2020-12-09 UTC" "2021-01-12 UTC" "2021-02-12 UTC" "2021-03-11 UTC"
> subvector5
 [1] "2021-04-09 UTC" "2021-05-10 UTC"
r vector subset
1个回答
0
投票

我们可以使用

split
.

lst <- split(data_controllo, rep(paste0("subvector", 1:length(elements_perVector)), elements_perVector))

$subvector1
 [1] "2018-09-24 UTC" "2018-10-22 UTC" "2018-11-21 UTC" "2018-12-19 UTC"
 [5] "2019-01-30 UTC" "2019-03-01 UTC" "2019-03-27 UTC" "2019-04-29 UTC"
 [9] "2019-05-31 UTC" "2019-07-30 UTC" "2019-08-28 UTC" "2019-09-26 UTC"
[13] "2019-10-22 UTC" "2019-11-20 UTC" "2019-12-16 UTC" "2020-01-21 UTC"
[17] "2020-02-17 UTC"

$subvector2
[1] "2020-04-21 UTC" "2020-05-19 UTC" "2020-06-16 UTC" "2020-07-14 UTC"
[5] "2020-08-18 UTC"

$subvector3
[1] "2020-09-16 UTC"

$subvector4
[1] "2020-10-13 UTC" "2020-12-09 UTC" "2021-01-12 UTC" "2021-02-12 UTC"
[5] "2021-03-11 UTC"

$subvector5
[1] "2021-04-09 UTC" "2021-05-10 UTC"

结果

lst
是一个列表。要获得 5 个独立的向量,请使用
list2env
.

list2env(lst, envir = .GlobalEnv)
© www.soinside.com 2019 - 2024. All rights reserved.