Examples

This document include a list of examples using rlist together with pipeR.

library(rlist)
library(pipeR)

Multiple sampling and aggregation

set.seed(100)
srcData <- rnorm(1000)
1:5 %>>% 
  list.map(sample(srcData,10)) %>>% 
  list.select(mean=mean(.),median=median(.)) %>>% 
  list.stack
#       mean   median
# 1  0.14381  0.24374
# 2  0.33333  0.22613
# 3 -0.40609 -0.42289
# 4 -0.29127 -0.22574
# 5 -0.07143  0.09998

Ungrouping classes of members

students <- '
A:
  s1:
    name: Ken
    age: 25
  s2:
    name: James
    age: 23
B:
  s3:
    name: Peter
    age: 25
  s4:
    name: Josh
    age: 24
'
students %>>%
  list.parse(type="yaml") %>>%
  list.map(f(members,,clsname) -> members %>>% list.update(class=clsname)) %>>%
  list.ungroup %>>%
  list.stack
#    name age class
# 1   Ken  25     A
# 2 James  23     A
# 3 Peter  25     B
# 4  Josh  24     B

Finding prime numbers

The following can tell whether an integer is a prime number.

is.prime <- function(num) {
   if (num == 2L) {
      TRUE
   } else if (any(num %% 2L:(num-1L) == 0L)) {
      FALSE
   } else { 
      TRUE
   }
}

To find 50 prime numbers no greater than 1000, we can use list.find().

list.find(1:1000,is.prime(.),50)
#  [1]   2   3   5   7  11  13  17  19  23  29  31  37  41  43  47  53  59
# [18]  61  67  71  73  79  83  89  97 101 103 107 109 113 127 131 137 139
# [35] 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229

To find all prime numbers no greater than 500, we can use list.filter().

list.filter(1:500,is.prime(.))
#  [1]   2   3   5   7  11  13  17  19  23  29  31  37  41  43  47  53  59
# [18]  61  67  71  73  79  83  89  97 101 103 107 109 113 127 131 137 139
# [35] 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233
# [52] 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337
# [69] 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439
# [86] 443 449 457 461 463 467 479 487 491 499