Чтобы использовать понимание списков в стиле Python с перечислениями, такими как нумерованные списки, одним из способов является установка пакета List- LC
complationion (разработан в 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, lists, predicates), где expr - это какое-то выражение, которое нужно оценить для всех элементов в списках, где списки - это один или несколько именованных списков, где они определяются именем и именем выражения. = list_expr, а где предикаты - это выражения, которые должны оцениваться как логическое значение. Например, чтобы получить список всех четных чисел в квадрате из списка x, мы можем написать lc (x ** 2, x = x, x% % 2 == 0). Результатом вызова lc является список, составленный из выражений в expr, для всех элементов во входных списках, в которых предикаты оцениваются как истинные. "
где обратите внимание, что вы можете оставить предикаты пустыми, например, в приведенном выше примере.
Инструменты itertools и перечисления в стиле Python
Вы можете использовать itertools R, который очень похож на itertools Python, далее в Cran здесь
library(itertools)
где описано
«Различные инструменты для создания итераторов, многие из которых созданы по образцу функций в модуле Python itertools, а другие - по образцу функций в пакете 'snow'».
Пример. перечисление
> 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)