Разбиение вектора на n списков объектов (R) - PullRequest
1 голос
/ 23 апреля 2020

Я хочу создать функцию, которая может разбивать вектор элементов на списки относительно размера списка. Я предоставляю функцию

Скажем, моя функция занимала только 2 элемента за раз, я хотел бы разделить этот вектор, чтобы он выглядел следующим образом

my_vector <- c(1,2,3,4,5)

# ideal function call
my_list <- obj_splitter(obj = my_vector, max_expressions = 2)

my_list
  : num [1:2] 1 2
  : num [1:2] 3 4
  : num 5

Текущая попытка:

obj_splitter <- function(obj, max_expressions) {
  output_list <- list()
  size <- length(obj)

  if(length(obj) <= max_expressions) {
    return(obj)
  } else if(size > max_expressions){
    if(size%%max_expressions>0) {
      obj_counter <- ceiling(size/max_expressions)
      # i am unsure how to move the items from the vector into their respective list
      return(obj_counter)
    }
  }
}

1 Ответ

4 голосов
/ 23 апреля 2020

Делает ли это то, что вы хотите?

my_vector <- c(1,2,3,4,5)

obj_splitter <- function(obj, max) {
  split(obj, ceiling(seq_along(obj)/max))
}

my_list <- obj_splitter(my_vector, 2)

str(my_list)
#List of 3
# $ 1: num [1:2] 1 2
# $ 2: num [1:2] 3 4
# $ 3: num 5

Вы все еще можете проверить некоторые крайние случаи. Если вы хотите, чтобы вывод не был назван, вы можете заключить его в unname.

Редактировать : чуть более компактная функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...