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
LCPaketi 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)