[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