Dans une question ici sur SO (LINK) une affiche a posé une question et j'ai donné une réponse qui fonctionne mais il y a une partie qui me dérange, créant un list
à partir d'un vecteur pour passer en liste d'indices. Donc les dire que j'ai ce vecteur:Faire une liste de vecteurs de longueur égale
n <- 1:10
#> n
# [1] 1 2 3 4 5 6 7 8 9 10
Disons que je veux le casser dans une liste de vecteurs et chaque vecteur est de longueur 3. Quelle est la meilleure (la plus courte quantité de code & ou plus rapide) pour accomplir ceci? Nous voulons jeter l'article 10 car il y a un reste de 1 (10 %% 3
) de 10/3 (length(n) - 10 %% 3
).
Ceci est le résultat souhaité
list(1:3, 4:6, 7:9)
Cela nous donnera les indices de ceux qui ne peuvent pas faire un groupe de trois:
(length(n) + 1 - 10 %% 3):length(n)
EDIT
est ici un approche intéressante publiée par Wojciech Sobala sur le other thread cela est lié à (je leur ai demandé de répondre ici et si ils le font, je vais retirer t son édition)
n <- 100
l <- 3
n2 <- n - (n %% l)
split(1:n2, rep(1:n2, each=l, length=n2))
En fonction:
indices <- function(n, l){
if(n > l) stop("n needs to be smaller than or equal to l")
n2 <- n - (n %% l)
cat("numbers", (n + 1 - n %% l):n, "did not make an index of length", l)
split(1:n2, rep(1:n2, each=l, length=n2))
}
Toutes les grandes réponses, mais je pense que X , Il est le plus court code-sage. Merci, ça m'embêtait. Toutes les meilleures approches que ce que je faisais. –