[R] queer data set

S.O. Nyangoma S.O.Nyangoma at amc.uva.nl
Tue Aug 16 00:19:31 CEST 2005


I have a dataset that is basically structureless. Its dimension varies 
from row to row and sep(s) are a mixture of tab and semi colon (;) and 
example is

HEADER1 HEADER2 HEADER3   HEADER3
A1       B1      C1       X11;X12;X13
A2       B2      C2       X21;X22;X23;X24;X25
A3       B3      C3       
A4       B4      C4       X41;X42;X43
A5       B5      C5       X51

etc., say. Note that a blank under HEADER3 corresponds to non 
occurance and all semi colon (;) delimited variables are under 
HEADER3. These values run into tens of thousands. I want to give some 
order to this queer matrix to something like:

HEADER1 HEADER2 HEADER3   HEADER3
A1       B1      C1       X11
A1       B1      C1       X12
A1       B1      C1       X13
A1       B1      C1       X14
A2       B2      C2       X21
A2       B2      C2       X22
A2       B2      C2       X23
A2       B2      C2       X24
A2       B2      C2       X25
A2       B2      C2       X26
A3       B3      C3       NA
A4       B4      C4       X41
A4       B4      C4       X42
A4       B4      C4       X43

Is there a brilliant R-way of doing such task?

Goodday. Stephen.








----- Original Message -----
From: Prof Brian Ripley <ripley at stats.ox.ac.uk>
Date: Monday, August 15, 2005 11:13 pm
Subject: Re: [R] How to get a list work in RData file

> On Mon, 15 Aug 2005, Xiyan Lon wrote:
> 
> > Dear R-Helper,
> (There are quite a few of us.)
> 
> > I want to know how I get a list  work which I saved in RData 
> file. For
> > example,
> 
> I don't understand that at all, but it looks as if you want to 
> save an 
> unevaluated call, in which case see ?quote and use something like
> 
> xyadd <- quote(test.xy(x=2, y=3))
> 
> load and saving has nothing to do with this: it doesn't change the 
> meaning 
> of objects in the workspace.
> 
> > > test.xy <- function(x,y) {
> > +    xy <- x+y
> > +    xy
> > + }
> > >
> > > xyadd <- test.xy(x=2, y=3)
> > > xyadd
> > [1] 5
> > > x1 <- c(2,43,60,8)
> > > y1 <- c(91,7,5,30)
> > >
> > > xyadd1 <- test.xy(x=x1, y=y1)
> > > xyadd1
> > [1] 93 50 65 38
> > > save(list = ls(all=TRUE), file = "testxy.RData")
> > > rm(list=ls(all=TRUE))
> > > load("C:/R/useR/testxy.RData")
> > > ls()
> > [1] "test.xy" "x1"      "xyadd"   "xyadd1"  "y1"
> > >
> > > ls.str(pat="xyadd")
> > xyadd :  num 5
> > xyadd1 :  num [1:4] 93 50 65 38
> > >
> >
> > When I run, I know the result like above
> > > xyadd
> > [1] 5
> > > xyadd1
> > [1] 93 50 65 38
> > >
> > what I want to know, is there any function to make the result like:
> >
> > > xyadd
> >
> >         test.xy(x=2, y=3)
> >
> > and
> >
> > > xyadd1
> >
> >        test.xy(x=x1, y=y1)
> 
> -- 
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-
> guide.html




More information about the R-help mailing list