apply (), lapply (), sapply (), tapply () функция в R с примери

Този урок има за цел да въведе колекцията от функции apply (). Функцията apply () е най -основната от всички колекции. Ще научим също sapply (), lapply () и tapply (). Приложимата колекция може да се разглежда като заместител на цикъла.

Колекцията apply () е в комплект с r съществено пакет, ако вие инсталирайте R с Anaconda . Функцията Apply in R може да бъде захранвана с много функции за изпълнение на излишно приложение върху колекция от обекти (рамка от данни, списък, вектор и т.н.). Целта на apply () е преди всичко да се избегне изричното използване на циклични конструкции. Те могат да се използват за входен списък, матрица или масив и да прилагат функция. Всяка функция може да бъде предадена в apply ().

В този урок ще научите

apply () функция

Приложи() приема рамка или матрица на данни като вход и дава изход във вектор, списък или масив. Функцията Apply в R се използва предимно за избягване на изричното използване на циклични конструкции. Това е най -основната от всички колекции, която може да се използва върху подложка.

Тази функция приема 3 аргумента: | _+_ |

Най -простият пример е да се сумира матрица върху всички колони. Приложимият код (m1, 2, sum) ще приложи функцията sum към матрицата 5x6 и ще върне сумата от всяка колона, достъпна в набора от данни. | _+_ |

Изход:

примерът на функцията apply () в R

Най -добра практика: Съхранявайте стойностите, преди да ги отпечатате в конзолата.

функция lapply ()

lapply () функцията е полезна за извършване на операции върху списъчни обекти и връща списъчен обект със същата дължина на първоначалния набор. lappy () връща списък със сходна дължина като обекта на входния списък, всеки елемент от който е резултат от прилагането на FUN към съответния елемент от списъка. Lapply в R приема списък, вектор или рамка от данни като вход и дава изход в списък. | _+_ |

l в lapply () означава списък. Разликата между lapply () и apply () се крие между възвръщаемостта на изхода. Резултатът от lapply () е списък. lapply () може да се използва за други обекти като рамки от данни и списъци.

lapply () не се нуждае от MARGIN.

Много лесен пример може да бъде промяната на низовата стойност на матрица с малки букви с функция tolower. Ние конструираме матрица с името на известните филми. Името е с главен формат. | _+_ |

Изход:

apply(X, MARGIN, FUN) Here: -x: an array or matrix -MARGIN: take a value or range between 1 and 2 to define where to apply the function: -MARGIN=1`: the manipulation is performed on rows -MARGIN=2`: the manipulation is performed on columns -MARGIN=c(1,2)` the manipulation is performed on rows and columns -FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>

Можем да използваме unlist (), за да преобразуваме списъка във вектор. | _+_ |

Изход:

 m1 <- matrix(C<-(1:10),nrow=5, ncol=6) m1 a_m1 <- apply(m1, 2, sum) a_m1

sapply () функция

sapply () функцията приема списък, вектор или рамка от данни като вход и дава изход във вектор или матрица. Той е полезен за операции върху списъчни обекти и връща списъчен обект със същата дължина на първоначалния набор. Функцията Sapply в R върши същата работа като функцията lapply (), но връща вектор. | _+_ |

Можем да измерим минималната скорост и спирачните разстояния на автомобилите от набора от данни за автомобили. | _+_ |

Изход:

 lapply(X, FUN) Arguments: -X: A vector or an object -FUN: Function applied to each element of x 
 movies <- c('SPYDERMAN','BATMAN','VERTIGO','CHINATOWN') movies_lower <-lapply(movies, tolower) str(movies_lower)

Изход:

 ## List of 4 ## $:chr'spyderman' ## $:chr'batman' ## $:chr'vertigo' ## $:chr'chinatown'
 movies_lower <-unlist(lapply(movies,tolower)) str(movies_lower)

Изход:

## chr [1:4] 'spyderman' 'batman' 'vertigo' 'chinatown'
sapply(X, FUN) Arguments: -X: A vector or an object -FUN: Function applied to each element of x

Изход:

 dt <- cars lmn_cars <- lapply(dt, min) smn_cars <- sapply(dt, min) lmn_cars

Можем да използваме вградена от потребителя функция в lapply () или sapply (). Създаваме функция, наречена avg, за да изчислим средната стойност на минимума и максимума на вектора. | _+_ |

Изход

## $speed ## [1] 4 ## $dist ## [1] 2 

Sapply в R е по -ефективен от lapply () във върнатия изход, защото sapply () съхранява стойности директно във вектор. В следващия пример ще видим, че това не винаги е така.

Можем да обобщим разликата между apply (), sapply () и `lapply () в следната таблица:

ФункцияАргументиОбективенВходИзход
Приложиприложи (x, MARGIN, FUN)Приложете функция към редовете или колоните или и дветеРамка или матрица от даннивектор, списък, масив
lapplylapply (X, FUN)Приложете функция към всички елементи на входаСписък, вектор или рамка от даннисписък
sapplysapply (X, FUN)Приложете функция към всички елементи на входаСписък, вектор или рамка от даннивектор или матрица

Резец вектор

Можем да използваме lapply () или sapply () взаимозаменяеми, за да нарязваме рамка от данни. Създаваме функция, под_средното (), която приема вектор от числови стойности и връща вектор, който съдържа само стойностите, които са строго над средното. Сравняваме двата резултата с идентичната () функция. | _+_ |

Изход:

smn_cars

функция tapply ()

tapply () изчислява мярка (средна, медиана, мин, макс и т.н.) или функция за всяка факторна променлива във вектор. Това е много полезна функция, която ви позволява да създадете подмножество от вектор и след това да приложите някои функции към всяко от подмножеството. | _+_ |

Част от работата на учен по данни или изследователи е да изчислява обобщения на променливите. Например, измерете средните или груповите данни въз основа на характеристика. Повечето от данните са групирани по идентификатор, град, държави и т.н. Обобщаването на групата разкрива по -интересни модели.

За да разберем как работи, нека използваме набора от данни за ириса. Този набор от данни е много известен в света на машинното обучение. Целта на този набор от данни е да се предскаже класът на всеки от трите вида цветя: Sepal, Versicolor, Virginica. Наборът от данни събира информация за всеки вид за тяхната дължина и ширина.

Като предишна работа можем да изчислим медианата на дължината за всеки вид. Tapply in R е бърз начин за извършване на това изчисление. | _+_ |

Изход:

## speed dist ## 4 2