2017-10-19 27 views
-3
data("iris") 
len<-split(iris$Petal.Length,iris$Species) 
len[5] 

données len:Comment obtenir cinquième valeur

$setosa 
[1] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 1.6 1.4 1.1 1.2 1.5 1.3 1.4 1.7 1.5 1.7 1.5 1.0 1.7 1.9 1.6 1.6 1.5 1.4 1.6 
[31] 1.6 1.5 1.5 1.4 1.5 1.2 1.3 1.4 1.3 1.5 1.3 1.3 1.3 1.6 1.9 1.4 1.6 1.4 1.5 1.4 

$versicolor 
[1] 4.7 4.5 4.9 4.0 4.6 4.5 4.7 3.3 4.6 3.9 3.5 4.2 4.0 4.7 3.6 4.4 4.5 4.1 4.5 3.9 4.8 4.0 4.9 4.7 4.3 4.4 4.8 5.0 4.5 3.5 
[31] 3.8 3.7 3.9 5.1 4.5 4.5 4.7 4.4 4.1 4.0 4.4 4.6 4.0 3.3 4.2 4.2 4.2 4.3 3.0 4.1 

$virginica 
[1] 6.0 5.1 5.9 5.6 5.8 6.6 4.5 6.3 5.8 6.1 5.1 5.3 5.5 5.0 5.1 5.3 5.5 6.7 6.9 5.0 5.7 4.9 6.7 4.9 5.7 6.0 4.8 4.9 5.6 5.8 
[31] 6.1 6.4 5.6 5.1 5.6 6.1 5.6 5.5 4.8 5.4 5.6 5.1 5.1 5.9 5.7 5.2 5.0 5.2 5.4 5.1 

Error:NULL 
+1

Quelle est la 5ème valeur? 'spply (len, '[', 5)'? – akrun

+0

S'il vous plaît soyez plus concis afin d'obtenir de l'aide des autres, je ne pense pas que tout le monde sache quel est votre problème. –

+0

Je veux obtenir $ setosa 1.4 $ versicolor 4.6 $ virginica 5.8 –

Répondre

1

Nous avons besoin de faire une boucle à travers le list (lapply - retourne un list, tandis que sapply retourne un vector) et obtenir le 5ème élément

sapply(len, '[', 5) 
#setosa versicolor virginica 
# 1.4  4.6  5.8 
0

Vous pouvez également utiliser la fonction de carte de purrr dans le répertoire tidyverse.

library(tidyverse) 
split(iris$Petal.Length,iris$Species) %>% map(5) 
$setosa 
[1] 1.4 

$versicolor 
[1] 4.6 

$virginica 
[1] 5.8 
+0

merci beaucoup! tidyverse est ma première fois entendu –

+0

jeter un oeil [ici] (https://www.tidyverse.org/) – Jimbou