purrr में फंक्शनल प्रोग्रामिंग के टूल्स

इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

High order functions

एक high order function कर सकता है:

  • एक या अधिक functions को arguments के रूप में लेना
  • एक function लौटाना
nop_na <- function(fun){
  function(...){
    fun(..., na.rm = TRUE)
  }
}

sd_no_na <- nop_na(sd) sd_no_na( c(NA, 1, 2, NA) )
0.7071068
इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

High order functions के तीन प्रकार

  • Functionals

  • Function factories

  • Function operators

इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

purrr में Adverbs

Errors और warnings को handle करना:

  • possibly()
  • safely()
library(purrr)
safe_mean <- safely(mean)
class(safe_mean)
"function"
इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

Error संभालने के लिए safely() का उपयोग करें.

safely() ऐसा function लौटाता है जो वापस करेगा:

  • $result
  • $error
safe_log <- safely(log)
safe_log("a")
$result
NULL
$error
<simpleError in log(x = x, base = base): non-numeric argument to mathematical function>
इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr
map( list(2, "a"), log )
Error in log(x = x, base = base) : non-numeric argument to mathematical function
map( list(2, "a"), safely(log) )
[[1]]
[[1]]$result
[1] 0.6931472

[[1]]$error
NULL

[[2]]
[[2]]$result
NULL

[[2]]$error
<simpleError in log(x = x, base = base):non-numeric argument to mathematical function>
इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

`safely()` के results से elements निकालना

map() और "result" या "error"

safe_log <- safely(log)

map( list("a", 2),  safe_log) %>% 
  map("result")
[[1]]
NULL

[[2]]
[1] 0.6931472

 

safe_log <- safely(log)

map( list("a", 2), safe_log ) %>% 
  map("error")
[[1]]
<simpleError in log(x = x, 
base = base): non-numeric argument 
to mathematical function>

[[2]]
NULL
इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

अभ्यास करते हैं!

इंटरमीडिएट फ़ंक्शनल प्रोग्रामिंग विथ purrr

Preparing Video For Download...