Extraire les vecteurs de la liste strsplit sans utiliser de boucle
Compte tenu de la vectorielles suivantes:
[1] "1-1694429" "2-1546669" "3-928598" "4-834486" "5-802353" "6-659439" "7-552850"
"8-516804" "9-364061"
[10] "10-354181" "11-335154" "12-257915" "13-251310" "14-232313" "15-217628" "16-216569"
Je suis en train de générer des deux vecteurs, chacun d'eux contenant les valeurs obtenues en divisant chaque élément du vecteur par le séparateur "-".
J'ai utilisé:
f <- function(s) strsplit(s, "-")
cc<-sapply(names.reads, f)
tête(cc)
$1-1694429
[1] "1" "1694429"
$`2-1546669`
[1] "2" "1546669"
Je sais que je peux y accéder comme:
> cc[[1]][1]
[1] "1"
> cc[[1]][2]
[1] "1694429"
Je voudrais avoir deux vecteurs , chacun contenant les valeurs stockées dans cc[[i]][1]
et cc[[i]][2]
...puis-je le faire sans l'aide d'une boucle? (J'ai plus de 1 millions d'éléments )
source d'informationauteur agatha
Vous devez vous connecter pour publier un commentaire.
À l'aide des mathématiques.café de la suggestion, le code suivant évite les boucles ou
sapply
produit
bien qu'il ne nécessite que chaque valeur d'origine pour être dans le format attendu.
Une autre approche:
À l'aide de
sapply()
(à des fins d'exhaustivité):y <- c("1-1694429", "2-1546669", "3-928598", "4-834486", "5-802353", "6-659439", "7-552850", "8-516804", "9-364061",
"10-354181", "11-335154", "12-257915", "13-251310", "14-232313", "15-217628", "16-216569")
@Oiseau souligné dans les commentaires, le
USE.NAMES
paramètre peut être utilisé pour éviter les noms dans le vecteur résultant.x <- sapply(y, function(x) strsplit(x, "-")[[1]], USE.NAMES=FALSE)
a <- x[1,]
b <- x[2,]
Ou avec la
purrr
package:Partie 1:
Partie 2:
Cherche à résoudre un problème similaire, est venu à travers ce post. L'ajout de ma solution à ce que je suis en avance dans le futur! (copie de Henry le code)
Qui produit un bloc de données à partir de laquelle les vecteurs appartenant à la n-ième élément de chaque élément de la liste peut être extraite.