J'essaie de créer une liste vide qui aura autant d'éléments qu'il y a num.of.walkers
. J'essaie alors d'ajouter, à chaque élément créé, une nouvelle sous-liste (longueur de la nouvelle sous-liste correspond à une valeur a
en essayant d'ajouter une liste, mais quelque chose se brise
Quand je bricoler en R tout se passe bien.
list.of.dist[[1]] <- vector("list", a[1])
list.of.dist[[2]] <- vector("list", a[2])
list.of.dist[[3]] <- vector("list", a[3])
list.of.dist[[4]] <- vector("list", a[4])
..?
J'essaie alors d'écrire une fonction Voici ma faible tentative qui se traduit par une erreur puce quelqu'un peut-il dans ce que je fais mal
countNumberOfWalks <- function(walk.df) {
list.of.walkers <- sort(unique(walk.df$label))
num.of.walkers <- length(unique(walk.df$label))
#Pre-allocate objects for further manipulation
list.of.dist <- vector("list", num.of.walkers)
a <- c()
# Count the number of walks per walker.
for (i in list.of.walkers) {
a[i] <- nrow(walk.df[walk.df$label == i,])
}
a <- as.vector(a)
# Add a sublist (length = number of walks) for each walker.
for (i in i:num.of.walkers) {
list.of.dist[[i]] <- vector("list", a[i])
}
return(list.of.dist)
}
> num.of.walks.per.walker <- countNumberOfWalks(walk.df)
Error in vector("list", a[i]) : vector size cannot be NA
L'utilisation de length() dans la boucle for() doit être remplacée par nrow(), mais à part ça - parfait! –
Je suis curieux de savoir pourquoi ma solution n'a pas fonctionné, est-ce que quelqu'un sait? Pour répondre à votre question concernant la validité de la création d'une liste de listes, je souhaite pré-allouer une liste vide qui sera utilisée pour accueillir les objets RasterLayer. Je pense que c'est un peu plus élégant que de créer des objets avec deparse(). –
@romunov. OK très bien. – wkmor1