Есть ли в R что-то эквивалентное функции reduce() в Python?

То есть: «Применить функцию двух аргументов кумулятивно к элементам последовательности слева направо, чтобы уменьшить последовательность до одного значения».


person Derrick Zhang    schedule 14.09.2011    source источник


Ответы (2)


Да, это называется Reduce.

Пример:

Reduce(paste, LETTERS[1:5])
[1] "A B C D E"

Reduce(sum, 1:5)
[1] 15

#List arguments work the same
Reduce(sum, list(1, 2, 3, 4, 5))
[1] 15

Дополнительные сведения о функциональном программировании в R см. в файле справки для ?funprog, псевдонима для ?Reduce.

person Andrie    schedule 14.09.2011
comment
+1 за то, что заставил меня выплюнуть кофе из носа после прочтения первой строчки. - person John; 14.09.2011
comment
@John Джон Весь рабочий день... Доброго утра, и тебе! - person Andrie; 14.09.2011
comment
Reduce("+",1:5) немного яснее, что он работает с функцией с двумя аргументами. - person James; 14.09.2011
comment
просто примечание о "+" против sum:Reduce(sum, list(c(1,2), c(3,4))) = 10, а Reduce("+", list(c(1,2), c(3,4))) = c(4,6) - person Colbert Sesanker; 11.03.2013
comment
Почему в верхнем регистре? - person Valentas; 03.05.2016