On 12-05-01 3:57 PM, Nordlund, Dan (DSHS/RDA) wrote:
Bert,
I think this is what is needed for the data frame

ix<- cbind(1:2,2:3)
ixm<- matrix(FALSE,4,3)
ixm[ix]<- TRUE
zdf[ixm]<- NA

Hope this is helpful,
That's essentially what I did in adding the numeric indexing.  The only 
complication was handling the case where ix contains out of bound 
values; users don't want to hear that ixm[ix] <- TRUE failed.
Duncan Murdoch

Dan

Daniel J. Nordlund
Washington State Department of Social and Health Services
Planning, Performance, and Accountability
Research and Data Analysis Division
Olympia, WA 98504-5204


-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
project.org] On Behalf Of Bert Gunter
Sent: Tuesday, May 01, 2012 11:46 AM
To: Duncan Murdoch
Cc: r-help@r-project.org
Subject: Re: [R] Data frame vs matrix quirk: Hinky error message?

Duncan:

Maybe there **is** a bug, then.

  >  zmat<- matrix(1:12,nr=4)
zdf<- data.frame(zmat)
ix<- cbind(c(FALSE,TRUE),c(TRUE,TRUE))
zmat[ix]
[1]  2  3  4  6  7  8 10 11 12
zdf[ix]
[1]  2  3  4  6  7  8 10 11 12
zmat[ix]<- NA
zmat
      [,1] [,2] [,3]
[1,]    1    5    9
[2,]   NA   NA   NA
[3,]   NA   NA   NA
[4,]   NA   NA   NA

## ??

zdf[ix]<- NA
Error in `[<-.data.frame`(`*tmp*`, ix, value = NA) :
   only logical matrix subscripts are allowed in replacement

That matrix replacement should not work with (in general mixed type)
data frames seems reasonable, actually. Trying to "fix things" may not
be. But I leave this to you and your fellow expeRts,

Cheers,
Bert


On Tue, May 1, 2012 at 11:30 AM, Duncan Murdoch
<murdoch.dun...@gmail.com>  wrote:
On 01/05/2012 2:12 PM, Bert Gunter wrote:
Many thanks, Ista:

I only looked in "].default" so the answer is: Alternative 4: dumb
Bert. Rap knuckles with ruler.

Actually, indexing by a logical matrix doesn't make much  sense to
me
in either case, as it does not have the effect of selecting
individual
elements, which is what numeric matrix indices do. But that's a
matter
of usage, neither bug nor feature.

If I had gotten something like the error message: "Matrix indices
not
allowed for replacement in data frames," I would not have been
surprised. But as you said, the behavior **IS** documented.

Your version is not correct:  matrix indices *are* allowed for
replacement,
but only logical matrix indices, not two column numerical ones.   The
message might be clearer if instead of saying "only logical matrix
subscripts are allowed in replacement"
it said "matrix subscripts must be logical matrices in replacement",
but I
think the basic problem is the limitation.  I'll fix that.

Duncan Murdoch

Best,
Bert



On Tue, May 1, 2012 at 10:49 AM, Ista Zahn<istaz...@gmail.com>
  wrote:
  Hi Bert,

  The failure itself is the documented behavior: ?'[.data.frame'
says
  "Matrix indexing ('x[i]' with a logical or a 2-column integer
       matrix 'i') using '[' is not recommended, and barely
supported.
       For extraction, 'x' is first coerced to a matrix.  For
       replacement, a logical matrix (only) can be used to select
the
       elements to be replaced in the same way as for a matrix."

  The error message may be a bit hinky, as obviously data.frames
can be
  indexed by things other than logical matricies. Or is there
another
  reason this strikes you as odd?

  Best,
  Ista

  On Tue, May 1, 2012 at 1:33 PM, Bert
Gunter<gunter.ber...@gene.com>
  wrote:
  AdvisoRs:

  Is the following a bug, feature, hinky error message, or dumb
Bert?
  mtest<- matrix(1:12,nr=4)
  dftest<- data.frame(mtest)
  ix<- cbind(1:2,2:3)
  mtest[ix]<- NA
  mtest
       [,1] [,2] [,3]
  [1,]    1   NA    9
  [2,]    2    6   NA
  [3,]    3    7   11
  [4,]    4    8   12

  ## But ...
  dftest[ix]<- NA
  Error in `[<-.data.frame`(`*tmp*`, ix, value = NA) :
    only logical matrix subscripts are allowed in replacement

  Obviously, I was expecting matrix indexing for replacement to
work
  similarly in both cases; however, I can see why it would be
  problematic for data frames (mixed types), but was a bit
nonplussed by
  the error message, which seems hinky to me.

  Cheers,
  Bert

  --

  Bert Gunter
  Genentech Nonclinical Biostatistics

  Internal Contact Info:
  Phone: 467-7374
  Website:

  http://pharmadevelopment.roche.com/index/pdb/pdb-functional-
groups/pdb-biostatistics/pdb-ncb-home.htm
  ______________________________________________
  R-help@r-project.org mailing list
  https://stat.ethz.ch/mailman/listinfo/r-help
  PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
  and provide commented, minimal, self-contained, reproducible
code.




--

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-
biostatistics/pdb-ncb-home.htm

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-
guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to