Laboratoriya ishlar Yo'q 7
Funktsional dasturiy ( yineleme va yo'nalt )
Maqsad: funktsional dasturlash xususiyatlari bilan tanishish . Qanday o'rganish amal funktsional ya'ni paketi yordamida dasturiy purrr . Vazifalarni tegishli dasturlash uslubida hal qiling . Hisobot tuzish.
Nazariy ma'lumotlar
Til R funktsional dasturlash paradigmasi qo'llab-quvvatlaydi , kuni eng yaxshi, uni amalga oshirish va funksiyalarini oshirish uchun dnako , u bir paketi foydalanish tavsiya etiladi purrr , qo'shimcha ravishda, siz ham paketi yuklab olish va o'rnatish kerak repurrrsive vazifalar uchun ma'lumotlar silsilasini o'z ichiga olgan, Men №1 .
Takrorlash
Takrorlash - bu ma'lumotlar qayta ishlashni tashkil etish, unda harakatlar ko'p marta takrorlanadi. Dasturlashda takrorlashlar ko'pincha tizimli dasturlashning elementlari, ya'ni tsiklning bitta bosqichi sifatida qaraladi. Amalda takrorlash funktsional dasturlashda ham muhim ahamiyatga ega, masalan, bir xil funktsiyani takrorlanadigan jarayon sifatida turli elementlarga tatbiq etishingiz mumkin. Kodi misolini ko'rib chiqaylik , ma'lumotlar to'plamidir bir xil turdagi tarkibiy va funksional uslubida yozilgan.
# Sinovlar ro'yxatini yarating
iris_list <- as.list ( iris [ 1 : 4 ])
# Amalga oshirish ham tarkibiy uslubi
iris_me a n <- list ()
uchun ( i yilda seq_along ( iris_list )) {
iris_me a n [[ i ]] <- o'rtacha ( iris_list [[ i ]])
}
# Xarita orqali funktsional uslubda amalga oshirish
iris_me a n <- xarita ( iris_list , o'rtacha )
1-rasm - Funktsional va tizimli amalga oshirishni taqqoslash
Xarita funktsiyasi ikkita dasturga ega (2-rasm).
# Funktsiyaga kirish nuqtasini ko'rsatmasdan xaritani amalga oshirish
iris_mean <- xarita ( iris_list , o'rtacha )
# Funktsiyaga kirish nuqtasini ko'rsatadigan xaritani amalga oshirish
iris_mean <- xaritasi ( iris_list , ~ o'rtacha ( .X ))
2-rasm - xaritalar sintaksisining imkoniyatlari
Amaliyotning ikkinchi variantida varaq elementini (". X ") tilde belgisi ("~") orqali o'tkazish joyini ko'rsatish mumkin . Amalga oshirish uchun ikkinchi yo'l afzaldir.
Xaritaning o'zgarishi . xarita _ *
Xarita funktsiyasi shunga o'xshash tuzilishga ega bo'lgan ro'yxatni chiqaradi , lekin ko'pincha natijani darhol biron bir versiyaga aylantirish kerak bo'ladi, buning uchun xarita funktsiyasining hosilalari ishlatiladi :
xarita ( .x, .f, ...)
map_ if ( .x, .p, .f , ...)
map_ at ( .x , .at, .f , ...)
map_ lgl ( .x, .f , ...)
map_ chr ( .x, .f , ...)
map_ int ( .x, .f , ...)
map_ dbl ( .x, .f , ...)
map_ dfr ( .x, .f , ..., .id = NULL)
map_ dfc ( .x, .f , ...)
yurish ( .x, .f, ...)
# Map _ dbl yordamida nomlangan sonli vektor yarating
iris_mean <- map_ dbl ( iris_list , ~ o'rtacha ( .X ))
3-shakl, - yaratish nomlari Hovhan th raqamli vektor yordamida map_dbl
Konveyer ( quvur liniyasi )
Quvur liniyasi asl funktsiya qiymatini keyingisiga o'tkazish uchun vositadir . Quvur liniyasi funktsional dasturlashning odatiy elementini ifodalaydi. R tilida quvur liniyasi%>% ga teng. Quvur liniyasi sintaksisi 4-rasmda keltirilgan.
funktsiya _ oldin ( )%>%
funktsiya _ keyin ()
Shakl 4 - Quvur liniyasi sintaksisi
Amaliy qism
Vazifa 1. Qayta tiklanadigan paketning sinov ma'lumotlaridan foydalanib , quyidagi topshiriqni bajaring . Shunga o'xshash qurilish ro'yxatiga bir nomidagi ro'yxatini yaratish SW _ filmlar , tashkil etish men foydali xususiyati nomidagi majmuini _ nomlari paketi purrr . Ro'yxat elementlari nomi sifatida siz tegishli film nomlaridan foydalanishingiz kerak (ro'yxat elementlariga indeksdan ham, element nomidan ham foydalanishingiz mumkinligiga e'tibor bering). Topshiriqni funktsional uslubda bajaring.
Vazifa 2. Purrr to'plami hujjatlaridan foydalanib , xarita _ * oilasining funktsiyalarining farqlari va xususiyatlarini tavsiflang . Har xil test ma'lumotlari yordamida amalga oshirishga misollar keltiring. Ma'lumotlar to'plamlari to'plamidan yoki o'zingizning test to'plamlarini yaratish orqali olinishi mumkin . Ma'lumotlar to'plami to'plamidan ma'lumotlarni ko'rish uchun kutubxonani ishga tushiring ( help = " ma'lumotlar to'plamlari ")
Do'stlaringiz bilan baham: |