r.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 28 Feb 2016 01:00:06 +0200
changeset 1927 417ffd620c12
parent 1926 71949d52fd3a
child 1928 eb1e2557ebf7
permissions -rw-r--r--
Profiling
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1926
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8 -*-
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
===
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
 R
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
===
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
.. contents::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
   :local:
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
Inspecting objects
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
==================
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
Info about object dimensions::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
  length(c(1,2,3))
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
  dim(matrix(1:6, 2, 3))
1927
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    16
  ncol(matrix(1:6, 2, 3))
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    17
  nrow(matrix(1:6, 2, 3))
1926
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
Brief info about any object::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
  typeof(str)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
  str(c(1, 2))
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
  str(summary)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    24
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
Brief info about vectors and matrixes::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
  summary(1:8)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
  summary(matrix(1:20, 4, 5))
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
Brief info on datasets and matrixes::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
  names(list(colA=1, colB=2))
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
Debugging
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
=========
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
To mark function for debugging call::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    39
  debug(fun, text = "", condition = NULL)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
  debugonce(fun, text = "", condition = NULL)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
To return function to normal execution::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
  undebug(fun)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
  isdebugged(fun)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
1927
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    47
You can under to debug mode in any piece of code by calling ``browser``.
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    48
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    49
``traceback`` prints out the function call stack after an error occurs; does
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    50
nothing if there's no error.
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    51
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    52
``trace`` allows you to insert debugging code into a function a specific places.
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    53
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    54
``recover`` allows you to modify the error behavior so that you can browse the
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    55
function call stack.
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    56
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    57
Profiling
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    58
=========
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    59
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    60
How long execution of expression takes (in low sec/milisec resolution)::
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    61
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    62
  system.time(expr, gcFirst = TRUE)
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    63
  unix.time(expr, gcFirst = TRUE)
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    64
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    65
``Rprof`` function enable global profiling. ``summaryRprof`` function decrypt
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    66
profiling data::
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    67
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    68
  Rprof()       ## start profiling
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    69
  Rprof(NULL)   ## suspend profiling
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    70
  Rprof(append = TRUE)  ## resume profiling
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    71
  Rprof(NULL)   ## end profiling
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    72
  summaryRprof() ## investigate profiling report
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    73
1926
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
Generating random numbers
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
=========================
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
For each distribution there are exists corresponding generation function, named
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
with prefix ``r``::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    79
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
  rnorm(n, mean = 0, sd = 1)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    81
  rt(n, df, ncp)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
  rbinom(n, size, prob)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
  rpois(n, lambda)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
  runif(n, min = 0, max = 1)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    86
In order to generate predictable sequences use::
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
  set.seed(seed, kind = NULL, normal.kind = NULL)
71949d52fd3a Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
1927
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    90
Sampling from array::
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    91
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    92
  sample(x, size, replace = FALSE, prob = NULL)
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    93
  sample.int(n, size = n, replace = FALSE, prob = NULL)
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    94
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    95
  sample(1:10, 10)  ## permutation!!
417ffd620c12 Profiling
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1926
diff changeset
    96
  sample(1:10, 100, replace=TRUE)