[R] Table Construction from calculations

Michael Kubovy kubovy at virginia.edu
Sat Mar 10 03:58:30 CET 2007


On Mar 9, 2007, at 9:23 PM, Seth Imhoff wrote:

> I am trying to create a table of values by adding  pairs of  
> vectors, but
> am running into some problems.  The problem is best expressed by a
> simple example.
>
> Starting with a data table "basis":
>   atom   x   y   z
> 1   Cu 0.0 0.0 0.0
> 2   Cu 0.5 0.5 0.5
>
> I want to add 0.5 0.5 0.5  (and also the 0 0 0 but it wouldn't change
> the values below so I won't refer to it in the rest of the example)  
> to a
> list of vectors in the form of:
>> latpoints
>    V1 V2 V3
> 1   0  0  0
> 2   0  0  1
> 3   0  0  2
> 4   0  0  3
> 5   0  1  1
>
> so that I end up with a table such as:
> V1  V2  V3
> 0.5 0.5 0.5
> 0.5 0.5 1.5
> 0.5 0.5 2.5
> 0.5 0.5 3.5
> 0.5 1.5 1.5
>
> I've tried many variations on the following: (not just cat, but  
> most of
> the data/data.table options)
>
>  test = for(i in 1:5) {cat(basis[1,2:4] + latticemultipliers[i,],
> append=TRUE)}
>
> However, I either end up with an error telling me that cat doesn't
> handle "type 'list' " or with a table with length of 1 such as:
>      x    y    z
> 2  0.5 1.5 1.5

Is this what you want?

 > (latpoints <- data.frame(matrix(c(0,0,0,0,0,1,0,0,2,0,0,3,0,1,1),  
nrow = 5, byrow = T)))
   X1 X2 X3
1  0  0  0
2  0  0  1
3  0  0  2
4  0  0  3
5  0  1  1
 > (latpoints <- latpoints + c(0.5, 0.5, 0.5))
    X1  X2  X3
1 0.5 0.5 0.5
2 0.5 0.5 1.5
3 0.5 0.5 2.5
4 0.5 0.5 3.5
5 0.5 1.5 1.5

This is an important feature of R called "vectorization" (see, .e.g,  
cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf or  
www.ms.washington.edu/stat390/winter07/R_primer.pdf) which allows you  
do avoid writing loops.
_____________________________
Professor Michael Kubovy
University of Virginia
Department of Psychology
USPS:     P.O.Box 400400    Charlottesville, VA 22904-4400
Parcels:    Room 102        Gilmer Hall
         McCormick Road    Charlottesville, VA 22903
Office:    B011    +1-434-982-4729
Lab:        B019    +1-434-982-4751
Fax:        +1-434-982-4766
WWW:    http://www.people.virginia.edu/~mk9y/



More information about the R-help mailing list