Всякий раз, когда я хочу сделать что-то "map" py в R, я обычно пытаюсь использовать функцию в семействе apply.
Однако я никогда не понимал различий между ними: как { sapply, lapply и т.д.} применяют эту функцию к входному/сгруппированному входу, как будет выглядеть вывод, или даже то, что вход может быть - поэтому я часто просто просматриваю их все, пока не получу то, что хочу.
Может кто-нибудь объяснить, как использовать тот, когда?
Мое текущее (возможно неправильное/неполное) понимание...
-
sapply(vec, f): input - это вектор. output - вектор/матрица, где элементiравенf(vec[i]), давая вам матрицу, еслиfимеет многоэлементный вывод -
lapply(vec, f): то же, что иsapply, но вывод - это список? -
apply(matrix, 1/2, f): input - это матрица. output - это вектор, где элементiравен f (строка/col я матрицы) -
tapply(vector, grouping, f): output - это матрица/массив, где элемент в матрице/массиве является значениемfпри группировкеgвектора, аgпопадает в строку /col имена -
by(dataframe, grouping, f): пустьg- группировка. применитеfк каждому столбцу группы /dataframe. достаточно напечатать группировку и значениеfв каждом столбце. -
aggregate(matrix, grouping, f): похоже наby, но вместо того, чтобы печатать вывод, агрегат вставляет все в кадр данных.
Боковой вопрос: я до сих пор не узнал plyr или не изменил форму - plyr или reshape полностью заменить все это?
