Циљ овог водича је увођење колекције функција аппли (). Функција аппли () је најосновнија од свих колекција. Такође ћемо научити саппли (), лаппли () и таппли (). Колекција пријава може се сматрати заменом петље.
Колекција аппли () се испоручује са основним пакетом р ако инсталирате Р са Анацондом. Функција аппли () може се хранити са многим функцијама за извођење сувишних апликација на колекцији објеката (оквир података, листа, вектор итд.). Сврха аппли () је првенствено да избегне експлицитну употребу конструкција петље. Могу се користити за листу уноса, матрицу или низ и применити функцију. Било која функција се може пренети у аппли ().
У овом упутству ћете научити
- функција аппли ()
- функција лаппли ()
- функција саппли ()
- Слице вецтор
- функција таппли ()
функција аппли ()
аппли () узима оквир података или матрицу као улаз и даје излаз у вектору, листи или низу. аппли () Функција се првенствено користи за избегавање експлицитне употребе конструкција петље. То је најосновнија од свих колекција која се може користити преко матрице.
Ова функција узима 3 аргумента:
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>
Најједноставнији пример је збрајање матрице по свим колонама. Код применити (м1, 2, сум) ће применити функцију збрајања на матрицу 5к6 и вратити збир сваке колоне доступне у скупу података.
m1 <- matrix(C<-(1:10),nrow=5, ncol=6)m1a_m1 <- apply(m1, 2, sum)a_m1
Излаз:
Најбоља пракса: Спремите вредности пре него што их одштампате на конзоли.
функција лаппли ()
функција лаппли () је корисна за обављање операција на објектима листе и враћа објект листе исте дужине оригиналног скупа. лаппи () враћа листу сличне дужине као објект листе уноса, чији је сваки елемент резултат примене ФУН на одговарајући елемент листе. лаппли () узима листу, вектор или оквир података као улаз и даје излаз у листи.
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 <- carslmn_cars <- lapply(dt, min)smn_cars <- sapply(dt, min)lmn_cars
Излаз:
## $speed## [1] 4## $dist## [1] 2
smn_cars
Излаз:
## speed dist## 4 2
lmxcars <- lapply(dt, max)smxcars <- sapply(dt, max)lmxcars
Излаз:
## $speed## [1] 25## $dist## [1] 120
smxcars
Излаз:
## speed dist## 25 120
Корисничку уграђену функцију можемо користити у лаппли () или саппли (). Креирамо функцију која се зове авг за израчунавање просека минимума и максимума вектора.
avg <- function(x) {( min(x) + max(x) ) / 2}fcars <- sapply(dt, avg)fcars
Оутпут
## speed dist## 14.5 61.0
функција саппли () је ефикаснија од лаппли () у враћеном излазу јер саппли () чува вредности усмерене у вектор. У следећем примеру видећемо да то није увек случај.
Разлику између аппли (), саппли () и `лаппли () можемо сумирати у следећој табели:
Функција |
Аргументи |
објективан |
Улазни |
Оутпут |
---|---|---|---|---|
применити |
применити (к, МАРГИН, ФУН) |
Примените функцију на редове или колоне или обоје |
Оквир података или матрица |
вектор, листа, низ |
лаппли |
лабаво (Кс, ЗАБАВНО) |
Примените функцију на све елементе уноса |
Листа, вектор или оквир података |
листа |
саппли |
саппи (Кс ЗАБАВНО) |
Примените функцију на све елементе уноса |
Листа, вектор или оквир података |
вектор или матрица |
Слице вецтор
За резање оквира података можемо да користимо лаппли () или саппли (). Креирамо функцију, испод_просека (), која узима вектор нумеричких вредности и враћа вектор који садржи само вредности које су строго изнад просека. Оба резултата упоређујемо са идентичном () функцијом.
below_ave <- function(x) {ave <- mean(x)return(x[x > ave])}dt_s<- sapply(dt, below_ave)dt_l<- lapply(dt, below_ave)identical(dt_s, dt_l)
Излаз:
## [1] TRUE
функција таппли ()
таппли () израчунава меру (средњу вредност, медијан , мин, мак, итд ...) или функцију за сваку променљиву фактора у вектору. То је врло корисна функција која вам омогућава да креирате подскуп вектора, а затим примените неке функције на сваки од подскупова.
tapply(X, INDEX, FUN = NULL)Arguments:-X: An object, usually a vector-INDEX: A list containing factor-FUN: Function applied to each element of x
Део посла научника или истраживача података је израчунавање сажетака променљивих. На пример, измерите просек или групне податке на основу неке карактеристике. Већина података је груписана према ИД-у, граду, држави итд. Резимирање по групи открива занимљивије обрасце.
Да бисмо разумели како то функционише, употребимо скуп података ириса. Овај скуп података је веома познат у свету машинског учења. Сврха овог скупа података је да предвиди класу сваке од три цветне врсте: Сепал, Версицолор, Виргиница. Скуп података прикупља информације за сваку врсту о њиховој дужини и ширини.
Као претходни рад, можемо израчунати медијану дужине за сваку врсту. таппли () је брз начин за извршавање овог израчунавања.
data(iris)tapply(iris$Sepal.Width, iris$Species, median)
Излаз:
## setosa versicolor virginica## 3.4 2.8 3.0