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