ویرگول
ورودثبت نام
محمد فاتحی
محمد فاتحیعلاقه مند به تحلیل داده و داده کاوی. لینکدین:https://www.linkedin.com/in/mohammad-fatehi-09654062/
محمد فاتحی
محمد فاتحی
خواندن ۱ دقیقه·۷ سال پیش

خانواده apply

از مهمترین دلايل زمان طولانی اجرای برنامه ها، وجود حلقه زياد يا حلقه های تو در تو در بدنه کدها است. رويكرد معمول در چنين شرايطی، استفاده از توابع ساخت يافته تر در جهت به حداقل رساندن تعداد حلقه ها است. خانواده apply در R Language از مجموعه توابع ساخت یافته است.

تابع apply

ساختار پيش فرض تابع apply به صورت

apply(X, MARGIN, FUN)

مولفه اول (X) یک آرایه یا ماتریس است.

اگر MARGIN برابر 1 باشد عملیات به صورت سطری و اگر برابر 2 باشد عملیات به صورت ستونی انجام می شود. چنانچه این مقدار برابر c(1,2) باشد عملیات به صورت سطری و ستونی انجام می پذیرد.

در مولفه FUN تابعی را که قصد داریم روی X پیاده سازی شود، را وارد می کنیم.

ماتریس زیر را در نظر بگیرید:

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

این ماتریس به شکل زیر است:

1 6 1 6 1 6 2 7 2 7 2 7 3 8 3 8 3 8 4 9 4 9 4 9 5 10 5 10 5 10

با استفاده از تابع apply می خواهیم جمع ستونی این ماتریس را محاسبه کنیم:

a_m1 <- apply (m1, 2, sum)

خروجی قطعه کد بالا به صورت زیر است:

15 40 15 40 15 40

توابع lapply و sapply

ساختار این توابع به شکل زیر است:

sapply(X, FUN)
lapply(X, FUN)

تابع lapply روی فهرست ها و در حالت کلی بر روی انواع اشیا قابل استفاده است. (l در lapply نشانگر list است)

در این تابع نیاز به مشخص کردن جهت (ستونی، سطری و...) نیست و فقط به یک تابع (شناسه FUN) نیاز است چرا که هر مولفه فهرست یا بردار به عنوان شناسه تابع استفاده می شود. به هر حال تابع lapply همیشه یک فهرست را برمی گرداند. اما اگر بخواهیم یک بردار یا ماتریس داشته باشیم از sapply برای تبدیل خروجی تابع lapply استفاده می کنیم (s در sapply نشانگر simplify است). تابع sapply کاراتر از تابع lapply است.


applyحلقهتکرار
۸
۰
محمد فاتحی
محمد فاتحی
علاقه مند به تحلیل داده و داده کاوی. لینکدین:https://www.linkedin.com/in/mohammad-fatehi-09654062/
مرجع متخصصین علوم داده ایران
مرجع متخصصین علوم داده ایران
دیتا‌آی‌او، یک وبلاگ اجتماعی از متخصصین علوم داده، یادگیری ماشین، کلان داده، پردازش تصویر، صوت و ویدیو است که تجربیات و آموخته‌های خود را در قالب نوشته در این وبلاگ منتشر می‌کنند.
شاید از این پست‌ها خوشتان بیاید