Numaralandırılmış listeler gibi numaralandırmalarla Python tarzı liste anlayışlarını kullanmak için bir yol, Liste anlama paketi LC
(geliştirilmiş 2018) ve itertools paketi (2015 geliştirilmiştir) kurmaktır.
R'de anlamaları listeleyin
LC
Paketi burada bulabilirsiniz .
install.packages("devtools")
devtools::install_github("mailund/lc")
Misal
> 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"
programlama sözdiziminin henüz Python'daki kadar temiz ve parlak olmadığı, ancak işlevsel olarak çalıştığı ve yardımının ana hatları:
"Sözdizimi şu şekildedir: lc (ifade, listeler, yüklemler) burada ifade, listelerdeki tüm öğeler için değerlendirilecek bir ifadedir, burada listeler bir veya daha fazla adlandırılmış listedir, burada bunlar bir ad ve bir ifade adıyla belirtilir = list_expr ve burada tahminler, bir boole değeri olarak değerlendirilmesi gereken ifadelerdir.Örneğin, bir x listesinden tüm çift sayıların karesi alınmış bir liste almak için lc (x ** 2, x = x, x% % 2 == 0). Lc çağrısının sonucu, tahminlerin doğru olarak değerlendirildiği girdi listelerindeki tüm öğeler için ifade içindeki ifadelerden oluşturulan bir listedir. "
Örneğin yukarıdaki örnekte yüklemleri boş bırakabileceğinize dikkat edin.
Python tarzı yinelemeler ve numaralandırmalar
Python'un itertools'una çok benzeyen R'nin itertool'larını, daha sonra Cran'da kullanabilirsiniz .
library(itertools)
tarif edildiği yerde
"Yineleyiciler oluşturmak için çeşitli araçlar, birçoğu Python itertools modülündeki ardışık işlevler ve diğerleri 'kar' paketindeki işlevlerden sonra desenlenmiştir."
Misal. sayım
> 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"
Misal. ZIP ile numaralandırma
> 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)