Как добавить к списку в функциональном цикле (добавление не работает?)

#r

#r

Вопрос:

Я пытаюсь создать список в цикле уникальных значений в моем df$RecipientLastName . Я создал uniqueid для этого col, затем создал пустой список и попытался заставить R добавлять каждое значение из uniqueid списка в вызываемый li список (чтобы пользователи могли вводить # участников). Вот как выглядит код.

 uniqueid <- unique(df$RecipientLastName, incomparables = FALSE, fromLast = FALSE, nmax = NA)
uniqueid2.list <- vector(mode = "list", length = 0)

loops <- function(numpar) {
  for (i in 1:numpar) {
    parID <- uniqueid[i]
    li <- append(uniqueid2.list, parID)
  }
  return(li)
}

loops(9)
 

Это результат, который я получаю, когда использую функцию циклов с номером = 9. 136 — это значение 9-го элемента в uniqueid. Я хочу, чтобы он возвращал первые 9 значений списка.

 [[1]]
[1] 136

 

Ответ №1:

Вы перезаписываете li значение на каждой итерации цикла, поэтому получаете только последнее значение.

 uniqueid <- unique(df$RecipientLastName, incomparables = FALSE, 
                   fromLast = FALSE, nmax = NA)


loops <- function(numpar) {
  uniqueid2.list <- vector(mode = "list", length = numpar)
  for (i in 1:numpar) {
    parID <- uniqueid[i]
    uniqueid2.list[[i]] <- append(uniqueid2.list, parID)
  }
  return(uniqueid2.list)
}
 

Но вам действительно не нужен цикл здесь. Вы можете сделать :

 result <- uniqueid[1:numpar]
#If you want it as a list
result <- as.list(result)