Zip или enumerate в R?

Каковы эквиваленты R для этих представлений списков Python:

[(i,j) for i,j in zip(index, Values)]
[(i,j) for i,j in enumerate(Values)]
[(i,j) for i,j in enumerate(range(10,20))]   %MWE, indexing or enumerating to 
                                            %keep up with the index, there may 
                                            %be some parameter to look this up

Пример с выходными данными

>>> [(i,j) for i,j in enumerate(range(10,20))]
[(0, 10), (1, 11), (2, 12), (3, 13), (4, 14), (5, 15), (6, 16), (7, 17), (8, 18), (9, 19)]

Я решил эту проблему ранее с помощью некоторого трюка в R, но больше не могу вспомнить, первой идеей было itertools -pkg, но я надеюсь найти более идиоматический способ решения проблем.

67
задан hhh 14 February 2012 в 17:58
поделиться

1 ответ

zip и enumerate не являются особенно трудными реализовать в R:

#' zip(1:5,1:10)
zip <- function(...) {
  mapply(list, ..., SIMPLIFY = FALSE)
}

Перечисляют, просто определить с точки зрения zip:

#' enumerate(l=LETTERS)
enumerate <- function(...) {
  zip(ix=seq_along(..1), ...)
}

, Так как это надлежащие функции, мы можем использовать ..., чтобы сделать их довольно гибкими и краткими, и использовать в своих интересах поведение mapply, такое как переработка исходных данных и именование вывода правильно.

0
ответ дан 24 November 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: