2016-05-07 11 views
2

Hier ist meine Liste genannt dico:die Elementlängen von Listen der Liste erhalten in R

dico <- list(list(list(c("dim.", "dimension", "dimensions", "mesures" 
), c("45 cm", "45", "45 CM", "0.45m")), list(c("tamano", "volumen", 
"dimension", "talla"), c("45 cm", "45", "0.45 M", "45 centimiento" 
)), list(c("measures", "dimension", "measurement"), c("45 cm", 
"0.45 m", "100 inches", "100 pouces"))), list(list(c("poids", 
"poid", "poids net"), c("100 grammes", "100 gr", "100")), list(
    c("peso", "carga", "peso especifico"), c("100 gramos", "100g", 
    "100", "100 g")), list(c("weight", "net wieght", "weight (grammes)" 
), c("100 grams", "100", "100 g"))), list(list(c("Batterie oui/non", 
"batterie", "présence batterie"), c("Oui", "batterie", "OUI" 
)), list(c("bateria", "bateria si or no", "bateria disponible" 
), c("si", "bateria furnindo", "1")), list(c("Battery available", 
"battery", "battery yes or no"), c("yes", "Y", "Battery given" 
)))) 

visuell es aussieht:

[[1]] 
[[1]][[1]] 
[[1]][[1]][[1]] 
[1] "dim."  "dimension" "dimensions" "mesures" 

[[1]][[1]][[2]] 
[1] "45 cm" "45" "45 CM" "0.45m" 


[[1]][[2]] 
[[1]][[2]][[1]] 
[1] "tamano" "volumen" "dimension" "talla"  

[[1]][[2]][[2]] 
[1] "45 cm"   "45"    "0.45 M"   "45 centimiento" 


[[1]][[3]] 
[[1]][[3]][[1]] 
[1] "measures" "dimension" "measurement" 

[[1]][[3]][[2]] 
[1] "45 cm"  "0.45 m"  "100 inches" "100 pouces" 



[[2]] 
[[2]][[1]] 
[[2]][[1]][[1]] 
[1] "poids"  "poid"  "poids net" 

[[2]][[1]][[2]] 
[1] "100 grammes" "100 gr"  "100"   


[[2]][[2]] 
[[2]][[2]][[1]] 
[1] "peso"   "carga"   "peso especifico" 

[[2]][[2]][[2]] 
[1] "100 gramos" "100g"  "100"  "100 g"  


[[2]][[3]] 
[[2]][[3]][[1]] 
[1] "weight"   "net wieght"  "weight (grammes)" 

[[2]][[3]][[2]] 
[1] "100 grams" "100"  "100 g" 
... 

ich alle Längen aller erhalten möchten Elemente meiner Liste. Deshalb möchte ich eine Ausgabe, die wie folgt aussehen würde:

[[1]] 
[[1]][[1]] 
[[1]][[1]][[1]] 
[1] 3 

[[1]][[1]][[2]] 
[1] 4 


[[1]][[2]] 
[[1]][[2]][[1]] 
[1] 4 

[[1]][[2]][[2]] 
[1] 4 


[[1]][[3]] 
[[1]][[3]][[1]] 
[1] 3 

[[1]][[3]][[2]] 
[1] 4 



[[2]] 
[[2]][[1]] 
[[2]][[1]][[1]] 
[1] 3 

[[2]][[1]][[2]] 
[1] 3  


[[2]][[2]] 
[[2]][[2]][[1]] 
[1] 3 

[[2]][[2]][[2]] 
[1] 4 


[[2]][[3]] 
[[2]][[3]][[1]] 
[1] 3 

[[2]][[3]][[2]] 
[1] 3 
... 

Ich weiß, ich sollte lapply verwenden, sapply und Sachen, aber ich habe stundenlang fest. Wie würdest du es machen?

+0

Sie müssen möglicherweise 'lapply (Dico, Funktion (x) lapply (x, Funktion (y) lapply (y, Länge)))' zu Erhalte das erwartete Format. BTW für das erste Element, sollte die Länge 4 '[1] "Dim." "Dimension" "Dimensionen" "mesures" ' – akrun

Antwort

4

Wir verwenden die rekursive Version von lapply dh rapply

rl <- rapply(dico, length, how="list") 
rl 
#[[1]] 
#[[1]][[1]] 
#[[1]][[1]][[1]] 
#[1] 4 

#[[1]][[1]][[2]] 
#[1] 4 


#[[1]][[2]] 
#[[1]][[2]][[1]] 
#[1] 4 

#[[1]][[2]][[2]] 
#[1] 4 
#--- 
+1

Wunderbare Antwort. Das hat wie ein Zauber funktioniert! –

+1

Vielen Dank, du hast meinen Tag wirklich gemacht –