#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)