Vectors only contain simple types (numbers, booleans or strings); lists, on the contrary, may contain anything, for instance sata frames or other lists. The polar decomposition, A=QR (Q: orthogonal, R: symetric positive definite) is an analogue of the polar decomposition of a complex number: it decomposes the correspondiong linear transformation into rotation and "stretching". We shall see how to call xgobi/ggobi (to visualize high-dimensional data, dynamically and interactively) from R.They can be used to store complex data, for instamce, trees. str( par() ) List of 68 $ adj : num 0.5 $ ann : logi TRUE $ ask : logi FALSE $ bg : chr "transparent" $ bty : chr "o" $ cex : num 1 $ : num 1 $ : num 1 $ : num 1.2 $ : num 1 $ cin : num [1:2] 0.147 0.200 ... We can meet this decomposition in Least Squares Estimates: when we try to minimize the absolute value of Ax-b, this amounts to solve d , , 1 [,1] [,2] [,3] [1,] 0.97323599 -0.7319138 -0.7355852 [2,] 0.06624588 -0.5732781 -0.4133584 [3,] 1.65808464 -1.3011671 -0.4556735 , , 2 [,1] [,2] [,3] [1,] 0.6314685 0.6263645 1.2429024 [2,] -0.2562622 -1.5338054 0.9634999 [3,] 0.1652014 -0.9791350 -0.2040375 Hair Eye Color , , Sex = Male Eye Hair Brown Blue Hazel Green Black 32 11 10 3 Brown 38 50 25 15 Red 10 10 7 7 Blond 3 30 5 8 , , Sex = Female Eye Hair Brown Blue Hazel Green Black 36 9 5 2 Brown 81 34 29 14 Red 16 7 7 7 Blond 4 64 5 8 str(Hair Eye Color) table [1:4, 1:4, 1:2] 32 38 10 3 11 50 10 30 10 25 ... We can also use it to produce "pretty" pictures, for instance to add a background to a graphic (with Image Magick) or to ask Po VRay to produce a picture (such as the one used as title of this document) or an animation.In this example, the command There are several types of SQL JOINs: in an INNER JOIN, we only get the rows that are present in both tables; in a LEFT JOIN, we get all the elements of the first table and the corresponding elements of the second (if any); a RIGHT JOIN is the opposite; an OUTER JOIN is the union of the LEFT and RIGHT JOINs. First, the eigen values (and the eigen vectors) can be complex -- if you want to interpret them as a real-world quantity, it is a bad start. However, the set of non-diagonalizable matrices has zero measure: in particular, if you take a matrix at random, in some "reasonable" way ("reasonable" means "along a probability measure absolutely continuous with respect to the Lebesgue measure on the set of square matrices of size n), the probability that it be diagonalizable (over the complex numbers) is 1 -- we say that matrices are almost surely diagonalizable. As a result, it is printed by the "print.default" function that displays its actual contents.In R, you can get the other types of JOIN with the "all", "all.x" and "all.y" arguments. However, the matrices you will want to diagonalize are often symetric real matrices: they are diagonalizable with real eigen values (and eigen vectors). Should you be interested in the rare cases when the matrices are not diagonalizable (for instance, if you are interested in matrices with integer, bounded coefficients), you can look into the Jordan decomposition, that generalizes the diagonalization and works with any matrix. r Loadings: Comp.1 Comp.2 Comp.3 Comp.4 Murder 0.995 Assault -0.995 Urban Pop -0.977 -0.201 Rape -0.201 0.974 Comp.1 Comp.2 Comp.3 Comp.4 SS loadings 1.00 1.00 1.00 1.00 Proportion Var 0.25 0.25 0.25 0.25 Cumulative Var 0.25 0.50 0.75 1.00 unclass(r) Comp.1 Comp.2 Comp.3 Comp.4 Murder -0.04170432 0.04482166 0.07989066 0.99492173 Assault -0.99522128 0.05876003 -0.06756974 -0.03893830 Urban Pop -0.04633575 -0.97685748 -0.20054629 0.05816914 Rape -0.07515550 -0.20071807 0.97408059 -0.07232502 print.default(r) Comp.1 Comp.2 Comp.3 Comp.4 Murder -0.04170432 0.04482166 0.07989066 0.99492173 Assault -0.99522128 0.05876003 -0.06756974 -0.03893830 Urban Pop -0.04633575 -0.97685748 -0.20054629 0.05816914 Rape -0.07515550 -0.20071807 0.97408059 -0.07232502 attr(,"class") [1] "loadings" str(r) loadings [1:4, 1:4] -0.0417 -0.9952 -0.0463 -0.0752 0.0448 ...Usually, you do not want the result to be printed, because most users will to see the plot and nothing else, and those who actually want the data, want it for further processing and will store it in a variable.To this end, you can return the value as invisible(): it will not be printed. Object Orientation was added to R as an afterthought -- even worse, it has been added twice.We shall now present in more detail each of these, explain how to build them, to manipulate them, to transform them, to convert them -- in the next chapter, we shall plot them. It is used to solve linear systems AX=Y where A is symetric positive -- this is the case for the equations defining least squares estimators.Here are several ways to define them (here, "c" stands for "concatenate"). We shall see later another application to the simulation of non independant normal variables, with a given variance-covariance matrix.

More precisely you have two data frames a (with columns x, y, z) and b (with columns x1, x2, y,z) and certain observations (rows) of a correspond to certain observations of b: the command merges them to yield a data frame with columns x, x1, x2, y, z. in matrix terms, this means that there exists an invertible matrix P (whose columns will be the eigen vectors) and a diagonal matrix D (whose elements will be the corresponding eigen values) such that Diagonalizable matrices sound good, but there may still be a few problems. The "unclass" command removes the class of an object: only remains the underlying type (usually, "list").There are two object-oriented programming paradigms in R: what we have explained works for the first (old, simple, understandandable) one. Plotting functions are used for their side effect (the plot that appears on the screen), but they can also return a value.That value can be the result of the computations that lead to the plot.In particular, if you need it, you can write functions that take other functions as argument -- and in case you wonder, yes, you need it. When you call a function you can use the argument names, without any regard to their order (this is very useful for functions that expect many arguments -- in particular arguments with default values).