From: Mikkel Grum <mi2kelgrum_at_yahoo.com>

Date: Fri 08 Jul 2005 - 06:40:41 EST

R-help@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 Received on Fri Jul 08 06:50:18 2005

Date: Fri 08 Jul 2005 - 06:40:41 EST

Thanks a lot!! This was really a big help. The
following solves my problem:

xmat <- as.data.frame(matrix(NA, 2, 3))

temp <- dbGetQuery(...)

if (!is.null(temp)) {xmat[i, 2:3] <- temp}

I'm adding data to only some columns of a larger matrix, on a row-by-row basis.

Best wishes,

Mikkel

--- "Marc Schwartz (via MN)" <mschwartz@mn.rr.com>
wrote:

> On Thu, 2005-07-07 at 10:20 -0700, Mikkel Grum

*> wrote:
**> > I have a situation where I'm filling out a
**> dataframe
**> > from a database. Sometimes the database query
**> doesn't
**> > get anything, so I end up trying to place NULL in
**> the
**> > dataframe like below.
**> >
**> > > temp <- NULL
**> > > xmat <- as.data.frame(matrix(NA, 2, 3))
**> > > xmat[1, 2:3] <- temp
**> > Error in if (m < n * p && (n * p)%%m)
**> > stop(gettextf("replacement has %d items, need %d",
**> :
**> > missing value where TRUE/FALSE needed
**> >
**> > I can't get the programme to accept that sometimes
**> > what the query looks for just doesn't exist, and I
**> > just want to move on to the next calculation
**> leaving
**> > the dataframe with a missing value in the given
**> cell.
**> > It's a real show stopper and I haven't found a way
**> > round it.
**> >
**> > Best wishes,
**> > Mikkel
**> >
**> > PS. I'm using dbGetQuery to query an SQLite
**> database.
**>
**> NULL represents a zero length object in R.
**>
**> Thus, trying to set only the first row in a data
**> frame to NULL makes no
**> sense, since you cannot have a 0 length object that
**> also has a single
**> row (as you seem to be trying to do above).
**>
**> Since a data frame is a series of lists, you could
**> do the following:
**>
**> > temp <- NULL
**> > xmat <- as.data.frame(matrix(NA, 2, 3))
**>
**> > xmat
**> V1 V2 V3
**> 1 NA NA NA
**> 2 NA NA NA
**>
**> > xmat[, 1] <- temp
**>
**> > xmat
**> V2 V3
**> 1 NA NA
**> 2 NA NA
**>
**> which removes the first column in the data frame.
**> This is the same as:
**>
**> > xmat[, -1]
**> V2 V3
**> 1 NA NA
**> 2 NA NA
**>
**>
**> You could also set the entire xmat to NULL as
**> follows:
**>
**> > xmat
**> V1 V2 V3
**> 1 NA NA NA
**> 2 NA NA NA
**>
**> > xmat <- NULL
**>
**> > xmat
**> NULL
**>
**>
**> You can then test to see if 'xmat' is a NULL:
**>
**> > is.null(xmat)
**> [1] TRUE
**>
**> and base a boolean expression and resultant action
**> on that result:
**>
**> if (!is.null(xmat))
**> {
**> do_calculations...
**> }
**>
**> If your calculations are on a row by row basis,
**> where NA's represent
**> missing data, you can also use one of several
**> functions to eliminate
**> those rows. See ?na.action, ?na.omit and
**> ?complete.cases for more
**> information and examples.
**>
**> HTH,
**>
**> Marc Schwartz
**>
**>
*

>

R-help@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 Received on Fri Jul 08 06:50:18 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:33:21 EST
*