[R] "invalid argument to unary operator" while selecting rows by name

William Dunlap wdunlap at tibco.com
Wed Sep 21 18:07:01 CEST 2016


The OP cannot be entirely blamed for thinking that x[,-"ColName"]
would omit x's "ColName" from the result.  Base R and many packages
have commonly used functions that do context-sensitive (aka 'nonstandard')
evaluation.

E.g. subset() evaluates each argument in a different way:
  > subset(data.frame(ColA=1:3,ColB=-(11:13)), -ColB>11, -ColA)
    ColB
  2  -12
  3  -13



Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Sep 21, 2016 at 7:45 AM, Bert Gunter <bgunter.4567 at gmail.com> wrote:

> No, Rui, your example misses the point. Your initial sentence hits it.
>
> The OP needs to carefully read
> ?"["
> and/or spend some time with a suitable R tutorial to learn proper
> syntax for subscripting. Asking foolish questions in lieu of doing her
> homework seems wrongheaded to me. Others may disagree, of course.
>
> Cheers,
> Bert
>
>
>
>
> Cheers,
> Bert
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Wed, Sep 21, 2016 at 1:26 AM,  <ruipbarradas at sapo.pt> wrote:
> > Hello,
> >
> > The error message means exactly what it says. The operator '-' is
> > unary and cannot be followed by a non-numeric atomic object (a vector).
> > Try for instance
> >
> > x <- list(a=1:10, b=rnorm(5))
> > -x
> >
> > Rui Barradas
> >
> >
> > Citando Pauline Laïlle <pauline.laille at gmail.com>:
> >
> >> Works like a charm, thanks! Still don't know what that error message
> >> means though. Any idea?
> >>
> >>   2016-09-20 20:13 GMT+02:00 <ruipbarradas at sapo.pt>:
> >>> Sorry, I've made a stupid mistake.
> >>> It's obviously the other way around.
> >>>
> >>> ix <- which(rownames(data) %in% c("601", "604"))
> >>> clean <- data[-ix, ]
> >>>
> >>> Rui Barradas
> >>>
> >>> Citando ruipbarradas at sapo.pt:
> >>>> Hello,
> >>>>
> >>>> Try something like the following.
> >>>>
> >>>> ix <- which(c("601", "604") %in% rownames(data))
> >>>> clean <- data[-ix, ]
> >>>>
> >>>> Hope this helps,
> >>>>
> >>>> Rui Barradas
> >>>>
> >>>> Citando Pauline Laïlle <pauline.laille at gmail.com>:
> >>>>
> >>>>> Dear all,
> >>>>>
> >>>>> I built a dataframe with read.csv2(). Initially, row names are
> integers
> >>>>> (order of answers to a survey). They are listed in the csv's first
> column.
> >>>>> The import works well and my dataframe looks like I wanted it to
> look.
> >>>>>
> >>>>> Row names go as follows :
> >>>>> [1] "6"   "29"  "31"  "32"  "52"  "55"  "63"  "71"  "72"  "80"
> "88"  "89"
> >>>>> "91"  "93"  "105" "110" "111" "117" "119" "120"
> >>>>> [21] "122" "127" "128" "133" "137" "140" "163" "165" "167" "169"
> "177"
> >>>>> "178" "179" "184" "186" "192" "193" "200" "201" "228"
> >>>>> etc.
> >>>>>
> >>>>> I would like to drop rows "601" & "604" to clean the dataframe.
> >>>>>
> >>>>> While data["601",] shows me the first row i'd like to drop,
> data[-"601",]
> >>>>> returns the following :
> >>>>> Error in -"601" : invalid argument to unary operator
> >>>>>
> >>>>> idem with data[c("601","604"),] and data[-c("601","604"),]
> >>>>>
> >>>>> It is the first time that I run into this specific error. After
> reading a
> >>>>> bit about it I still don't understand what it means and how to fix
> it.
> >>>>>
> >>>>> Thanks for reading!
> >>>>> Best,
> >>>>> Pauline.
> >>>>>
> >>>>>         [[alternative HTML version deleted]]
> >>>>>
> >>>>> ______________________________________________
> >>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>>>> 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>>> 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.
> >>>
> >>>
> >
> >
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

	[[alternative HTML version deleted]]



More information about the R-help mailing list