Um Listenverständnisse im Python-Stil mit Aufzählungen wie Aufzählungslisten zu verwenden, besteht eine Möglichkeit darin, das Listenverständnispaket LC
(entwickelt 2018) und das itertools-Paket (entwickelt 2015) zu installieren .
Listenverständnisse in R.
Das LC
Paket finden Sie hier .
install.packages("devtools")
devtools::install_github("mailund/lc")
Beispiel
> library(itertools); library(lc)
> lc(paste(x$index, x$value), x=as.list(enumerate(rnorm(5))), )
[[1]]
[1] "1 -0.715651978438808"
[[2]]
[1] "2 -1.35430822605807"
[[3]]
[1] "3 -0.162872340884235"
[[4]]
[1] "4 1.42909760816254"
[[5]]
[1] "5 -0.880755983937781"
wo die Programmiersyntax noch nicht so sauber und poliert ist wie in Python, aber funktional funktioniert und ihre Hilfe beschreibt:
"Die Syntax lautet wie folgt: lc (Ausdruck, Listen, Prädikate) wobei Ausdruck ein Ausdruck ist, der für alle Elemente in den Listen ausgewertet werden soll, wobei Listen eine oder mehrere benannte Listen sind, wobei diese durch einen Namen und einen Ausdrucksnamen angegeben werden = list_expr, und wobei Prädikate Ausdrücke sind, die zu einem booleschen Wert ausgewertet werden sollten. Um beispielsweise eine Liste aller geraden Zahlen im Quadrat aus einer Liste x zu erhalten, können wir lc (x ** 2, x = x, x%) schreiben % 2 == 0). Das Ergebnis eines Aufrufs von lc ist eine Liste, die aus den Ausdrücken in Ausdruck für alle Elemente in den Eingabelisten erstellt wurde, bei denen die Prädikate als wahr ausgewertet werden. "
Beachten Sie, dass Sie die Prädikate beispielsweise im obigen Beispiel leer lassen können.
Itertools und Aufzählungen im Python-Stil
Sie können R itertools verwenden, die Pythons itertools sehr ähnlich ist, weiter in Cran hier
library(itertools)
wo beschrieben
"Verschiedene Tools zum Erstellen von Iteratoren, viele nach Funktionen im Python itertools-Modul und andere nach Funktionen im 'snow'-Paket."
Beispiel. Aufzählung
> for (a in as.list(enumerate(rnorm(5)))) { print(paste(a$index, "index:", a$value))}
[1] "1 index: 1.63314811372568"
[1] "2 index: -0.983865948988314"
[1] "3 index: -1.27096072277818"
[1] "4 index: 0.313193212706331"
[1] "5 index: 1.25226639725357"
Beispiel. Aufzählung mit ZIP
> for (h in as.list(izip(a=1:5, b=letters[1:5]))) { print(paste(h$a, "index:", h$b))}
[1] "1 index: a"
[1] "2 index: b"
[1] "3 index: c"
[1] "4 index: d"
[1] "5 index: e"
expand.grid(i=10:20,j=10:20)