author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Sun, 28 Feb 2016 14:10:07 +0200 | |
changeset 1928 | eb1e2557ebf7 |
parent 1927 | 417ffd620c12 |
child 1936 | 998d6c646f20 |
permissions | -rw-r--r-- |
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 | 16 |
ncol(matrix(1:6, 2, 3)) |
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) |
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
22 |
class(str) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
23 |
unclass(str) |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
24 |
str(c(1, 2)) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
25 |
str(summary) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
26 |
|
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
27 |
Column names of datasets:: |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
28 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
29 |
names(...) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
30 |
names(list(colA=1, colB=2)) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
31 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
32 |
Column/row names of matrixes:: |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
33 |
|
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
34 |
colnames(matrix(...)) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
35 |
rownames(matrix(...)) |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
36 |
|
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
37 |
List objects in global context: ``ls()``. |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
38 |
|
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
39 |
Objext size in memory: ``object.site(1:2)`` |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
40 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
41 |
Debugging |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
42 |
========= |
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 |
To mark function for debugging call:: |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
45 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
46 |
debug(fun, text = "", condition = NULL) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
47 |
debugonce(fun, text = "", condition = NULL) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
48 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
49 |
To return function to normal execution:: |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
50 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
51 |
undebug(fun) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
52 |
isdebugged(fun) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
53 |
|
1927 | 54 |
You can under to debug mode in any piece of code by calling ``browser``. |
55 |
||
56 |
``traceback`` prints out the function call stack after an error occurs; does |
|
57 |
nothing if there's no error. |
|
58 |
||
59 |
``trace`` allows you to insert debugging code into a function a specific places. |
|
60 |
||
61 |
``recover`` allows you to modify the error behavior so that you can browse the |
|
62 |
function call stack. |
|
63 |
||
64 |
Profiling |
|
65 |
========= |
|
66 |
||
67 |
How long execution of expression takes (in low sec/milisec resolution):: |
|
68 |
||
69 |
system.time(expr, gcFirst = TRUE) |
|
70 |
unix.time(expr, gcFirst = TRUE) |
|
71 |
||
72 |
``Rprof`` function enable global profiling. ``summaryRprof`` function decrypt |
|
73 |
profiling data:: |
|
74 |
||
75 |
Rprof() ## start profiling |
|
76 |
Rprof(NULL) ## suspend profiling |
|
77 |
Rprof(append = TRUE) ## resume profiling |
|
78 |
Rprof(NULL) ## end profiling |
|
79 |
summaryRprof() ## investigate profiling report |
|
80 |
||
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
81 |
Generating random numbers |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
82 |
========================= |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
83 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
84 |
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
|
85 |
with prefix ``r``:: |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
86 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
87 |
rnorm(n, mean = 0, sd = 1) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
88 |
rt(n, df, ncp) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
89 |
rbinom(n, size, prob) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
90 |
rpois(n, lambda) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
91 |
runif(n, min = 0, max = 1) |
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
92 |
rexp |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
93 |
rchisq |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
94 |
rgamma |
1926
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
95 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
96 |
In order to generate predictable sequences use:: |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
97 |
|
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
98 |
set.seed(seed, kind = NULL, normal.kind = NULL) |
71949d52fd3a
Inspecting objects, Debugging, Generating random numbers
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
99 |
|
1927 | 100 |
Sampling from array:: |
101 |
||
102 |
sample(x, size, replace = FALSE, prob = NULL) |
|
103 |
sample.int(n, size = n, replace = FALSE, prob = NULL) |
|
104 |
||
105 |
sample(1:10, 10) ## permutation!! |
|
106 |
sample(1:10, 100, replace=TRUE) |
|
1928
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
107 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
108 |
Looping over data |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
109 |
================= |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
110 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
111 |
``lapply`` iterate over data and return list of function application:: |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
112 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
113 |
lapply(1:5, function(x) x^2) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
114 |
lapply(matrix(rnorm(20*10),20,10), mean) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
115 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
116 |
Exploring data |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
117 |
============== |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
118 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
119 |
Check `Inspecting objects`_ section. |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
120 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
121 |
Investigating unique values:: |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
122 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
123 |
sapply(data, unique) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
124 |
sapply(data$col, unique) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
125 |
sapply(data[,c("col1","col2")], unique) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
126 |
sapply(data[,5:10], unique) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
127 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
128 |
table(data$col) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
129 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
130 |
tapply(data$what, data$by, unique) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
131 |
tapply(data$what, data$by, summary) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
132 |
tapply(data$what, data$by, range) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
133 |
tapply(data$what, data$by, mean) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
134 |
tapply(data$what, data$by, sd) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
135 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
136 |
Brief info about vectors and matrixes:: |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
137 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
138 |
summary(1:8) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
139 |
summary(matrix(1:20, 4, 5)) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
140 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
141 |
Simple plots:: |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
142 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
143 |
i<-1:100 |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
144 |
x<-i/10 |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
145 |
y<-x^2 |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
146 |
plot(x,y) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
147 |
|
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
148 |
hist(rpois(100,10)) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
149 |
hist(rpois(100,10),breaks=20) |
eb1e2557ebf7
Looping over data, Exploring data
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
1927
diff
changeset
|
150 |