How to Use lapply, sapply and mapply in R

  Рет қаралды 38,956

DataDaft

DataDaft

4 жыл бұрын

This video shows how to use the lapply, sapply and mapply functions to execute a function on each element of a list or vector in R. The apply family of functions provide a convenient way to quickly invoke a function on each element of vectors without having to write custom for loops.
Note that since data frames are lists where each column are separate elements of the list, the lapply and sapply will apply a function to each column when run on a data frame. This provides a quick way to create column-based summary statistics.
Code used in this clip:
Example of lapply
data <- mtcars
Function to apply
mpg_category <- function(mpg){
if(mpg > 30){
return("High")
} else if (mpg > 20){
return("Medium")
}
return("Low")
}
Apply to each element
lapply(X = data$mpg, FUN = mpg_category)
Use sapply to simplify the result to a vector or matrix instead of a list
sapply(X = data$mpg, FUN = mpg_category)
You can pass additional arguments after FUN
within_range <- function(mpg, low, high){
if (mpg >= low & mpg <= high){
return(TRUE)
}
return(FALSE)
}
index <- sapply(X = data$mpg, FUN = within_range, low = 15, high = 20)
index
data[index,]
Use mapply to apply a function along multiple vectors at the same time
Function to apply
mpg_within_standard_range <- function(mpg, cyl){
if (cyl == 4){
return(within_range(mpg, low = 23, high = 31))
} else if (cyl == 6) {
return(within_range(mpg, low = 18, high = 23))
}
return(within_range(mpg, low = 13, high = 18))
}
index <- mapply(FUN = mpg_within_standard_range, mpg = data$mpg, cyl = data$cyl)
index
data[!index,]
When used on a dataframe, lapply and sapply apply a function to each column
sapply(data, FUN = median)
* Note: KZbin does not allow greater than or less than symbols in the text description, so the code above will not be exactly the same as the code shown in the video! For R that means I may use = for assignment and the special Unicode large < and > symbols in place of the standard sized ones for dplyr pipes and comparisons. These special symbols should work as expected for R code on Windows, but may need to be replaced with standard greater than and less than symbols for other operating systems.

Пікірлер: 48
@alfredstiassny4650
@alfredstiassny4650 4 жыл бұрын
Finally a clear explanation if these functions!
@designgoat2023
@designgoat2023 21 күн бұрын
My man thank you SO much for being such an amazing teacher! 🙌
@smilynohn
@smilynohn 3 жыл бұрын
I think this is the best explanation I have seen about these 3 functions. Practical as well. Thanks a lot!
@DataDaft
@DataDaft 3 жыл бұрын
Glad it was useful to you!
@jjaa1962
@jjaa1962 4 жыл бұрын
Thank you so much for such a clear and simple presentation!
@alemarieceria3032
@alemarieceria3032 Жыл бұрын
Awesome! This was super clear, concise and most importantly, helpful! Thank you for this!
@konstantinosmaravegias4198
@konstantinosmaravegias4198 3 жыл бұрын
Thank you. Plain and simple explanation.
@joshroberts5661
@joshroberts5661 3 жыл бұрын
This was explained perfectly! I am officially subscribed. Thank you.
@DataDaft
@DataDaft 3 жыл бұрын
Thanks! Glad you found it helpful.
@yaweli2968
@yaweli2968 8 ай бұрын
Clearly explained. Thanks
@rogerwilcoshirley2270
@rogerwilcoshirley2270 3 жыл бұрын
Nicely done ✅, very useful esp the mapply explanations.
@pipertripp
@pipertripp 2 жыл бұрын
very handy. Thanks for putting it together!
@jhilamsinha6217
@jhilamsinha6217 4 жыл бұрын
Great video !! very simple and effective..
@octavius654321
@octavius654321 3 жыл бұрын
Thank you so much for the explanation
@TongPax
@TongPax 3 жыл бұрын
Clear explanation. Nice.
@multitaskprueba1
@multitaskprueba1 2 жыл бұрын
Fantastic video! Thank you! You are a genius!
@Ms-RAZ
@Ms-RAZ 3 жыл бұрын
God bless you. Thank you!
@aronsantacruz4239
@aronsantacruz4239 3 жыл бұрын
Thanks! Greetings from Peru.
@kartikeyasharma9908
@kartikeyasharma9908 4 жыл бұрын
Hey, thanks for uploading such an amazing video.
@harryporter2099
@harryporter2099 3 жыл бұрын
Thank you Sir!
@1961Lobo1961
@1961Lobo1961 2 жыл бұрын
Very well explained Thank you very much
@wilsonjp23
@wilsonjp23 Жыл бұрын
Dude ty this exactly what I needed.
@ciantuohy4381
@ciantuohy4381 3 жыл бұрын
Thank you so much! This is great!
@DataDaft
@DataDaft 3 жыл бұрын
Glad it was helpful!
@scottparrish7244
@scottparrish7244 3 жыл бұрын
Awesome. I really needed to see this video.
@mky1920
@mky1920 2 жыл бұрын
well explained. thank you
@javierlopezbahon
@javierlopezbahon 3 жыл бұрын
Thank you!!!
@joelkosianza7694
@joelkosianza7694 3 жыл бұрын
Thanks for this amazing video
@larissacury7714
@larissacury7714 Жыл бұрын
Thank you!
@meditationandrelaxation7460
@meditationandrelaxation7460 3 жыл бұрын
Amazing tutorial
@niceday2015
@niceday2015 Жыл бұрын
Thank you very much
@totochandelier
@totochandelier 4 жыл бұрын
thx !
@reubenjake8573
@reubenjake8573 4 жыл бұрын
What does the small x argument in lapply() do?
@vincenzo4259
@vincenzo4259 2 жыл бұрын
Thanks
@xyzphd122
@xyzphd122 Жыл бұрын
my lapply does not return it as 1. 2. 3. ... but with [[#]]... could you explain how you were able to set it to return in that format? for lapply? TY
@chuckbecker4983
@chuckbecker4983 2 жыл бұрын
Okay, so I'm hung up on a trivial formatting thing, but when I run lapply my output includes all of the list indexes and looks nothing like the neatly serial numbered output at 1:50. My output: > lapply( X = data$mpg, FUN = mpg_func ) [[1]] [1] "Medium" [[2]] [1] "Medium" [[3]] [1] "Medium" [[4]] [1] "Medium" [[5]] [1] "Low" Any help greatly appreciated!
@urjitaswar6661
@urjitaswar6661 Жыл бұрын
Yeah, am facing the same issue.. also my sapply function is returning list() as an output (like an empty list) instead of the supposed output..
@skyscraper5910
@skyscraper5910 3 жыл бұрын
Another maybe idea, if you showed what would happen if you tried to use lapply instead of mapply in the mapply example
@skyscraper5910
@skyscraper5910 3 жыл бұрын
Would be helpful if the within_range function was still shown in the corner while showing the pithing_standard_range_funciton. otherwise, great stuff
@Orange-xw4lt
@Orange-xw4lt 3 жыл бұрын
Hi, If I have a wave how can I take and separate the values ​​of the crests starting from a certain threshold?
@DataDaft
@DataDaft 3 жыл бұрын
Depends on how the data is stored, but if it is in a single vector you could use data[ data > threshold ] to get the values above a certain threshold.
@Orange-xw4lt
@Orange-xw4lt 3 жыл бұрын
@@DataDaft the problem is to separate the values of the crests as individual intervals and calculate the average.
@jimaroddrigo7679
@jimaroddrigo7679 4 жыл бұрын
Dear sir, Could you please help me with my question?. I have to create data for an empty matrix and matrix size is big as ex. 450×450 . I used for loop but it takes longtime like more than 24 hrs since there are many functions are running inside the for loop for creating elements . So I heard we can use apply() function instead of for loop so could you please let me know that can we use apply() function to empty matrix . I have clear idea to use apply() non empty matrix but do not know how to fill a matrix using apply () ...
@DataDaft
@DataDaft 4 жыл бұрын
It is difficult to answer such a question without knowing the details of what you are trying to do and how you are creating/populating data. You could start with a matrix of the desired size filled with NA and then use apply to generate columns of values by passing in a custom function that creates vectors that are the same length as your columns. Something like: empty
@homataha5626
@homataha5626 3 жыл бұрын
what about the apply function? I am a little confused about when to use apply and when to use lappy?
@khaibaromari8178
@khaibaromari8178 3 жыл бұрын
I was wondering which IDE is he using? is it jupyter for R lol
@DataDaft
@DataDaft 3 жыл бұрын
I'm using the Kaggle Notebook environment, which is a basically an R Jupyter notebook. You can sign up for an account on Kaggle and make a new R notebook if you want to replicate this environment. It isn't really the best in terms of an IDE, it is just convenient because it allows for public sharing of code and anyone wants to can use it and should get the same results as what is shown in the videos.
@shalinisarathy3002
@shalinisarathy3002 3 жыл бұрын
very nice explanation. Thank you.
How To Use Apply in R
4:38
DataDaft
Рет қаралды 6 М.
A tutorial for writing functions in R (CC177)
14:37
Riffomonas Project
Рет қаралды 14 М.
I wish I could change THIS fast! 🤣
00:33
America's Got Talent
Рет қаралды 58 МЛН
Just try to use a cool gadget 😍
00:33
123 GO! SHORTS
Рет қаралды 85 МЛН
小女孩把路人当成离世的妈妈,太感人了.#short #angel #clown
00:53
Apply Family of Functions in R Part 1: apply()
11:53
Richard Webster
Рет қаралды 63 М.
Apply Function in R  | R Tutorial 1.15 | MarinStatsLectures
6:49
MarinStatsLectures-R Programming & Statistics
Рет қаралды 77 М.
Iteration Without Loops in R: The apply Family
25:34
Biodiversity Data Science
Рет қаралды 1,5 М.
Indexing and looping over lists in R, a tutorial (CC174)
19:59
Riffomonas Project
Рет қаралды 4,8 М.
Lubridate - how to manipulate date and time data in R
18:05
R Programming 101
Рет қаралды 9 М.
Describe and Summarise your data
19:44
R Programming 101
Рет қаралды 50 М.
If-else statements in R
12:29
Equitable Equations
Рет қаралды 3,3 М.
20 R Packages You Should Know
30:42
RichardOnData
Рет қаралды 38 М.
27. All about Dataframes in R
23:36
Anand S
Рет қаралды 10 М.
What did zookeeper do to Catnap and dogday??? Dogday rescue (4)
0:15
I Have Ducks Stuck In My Ears😰🐤👂
0:17
Giggle Jiggle
Рет қаралды 11 МЛН