Для того, щоб використовувати розуміння списку стилів Python з переліченнями, такими як перераховані списки, одним із способів є встановлення пакету розуміння списку LC
(розроблений 2018) та пакет itertools (розроблений 2015).
Перелік розумінь у R
Ви можете знайти LC
пакет тут .
install.packages("devtools")
devtools::install_github("mailund/lc")
Приклад
> 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"
де синтаксис програмування ще не такий чистий і відшліфований, як у Python, але функціонально працює та описується його довідка:
"Синтаксис виглядає так: lc (expr, списки, предикати), де expr - це якийсь вираз, що обчислюється для всіх елементів у списках, де списки - це один або кілька іменованих списків, де вони вказуються за допомогою імені та імені виразу = list_expr, і де предикати - це вирази, які слід обчислити до логічного значення. Наприклад, щоб отримати список усіх парних чисел у квадраті, зі списку x ми можемо записати lc (x ** 2, x = x, x% % 2 == 0). Результатом виклику lc є список, побудований із виразів у expr, для всіх елементів у вхідних списках, де предикати мають значення true. "
де зауважте, що предикати можна залишити порожніми, наприклад, у наведеному вище прикладі.
Інструменти та переліки у стилі Python
Ви можете використовувати itertools R, дуже схожі на itertools Python, далі в Cran тут
library(itertools)
де описано
"Різні інструменти для створення ітераторів, багато з яких мають шаблони після функцій у модулі itertools Python, а інші - за функціями у пакеті" сніг "."
Приклад. перерахування
> 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"
Приклад. перерахування за допомогою 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)