Bert Gunter
2016-Sep-21 14:45 UTC
[R] "invalid argument to unary operator" while selecting rows by name
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.
William Dunlap
2016-Sep-21 16:07 UTC
[R] "invalid argument to unary operator" while selecting rows by name
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]]
Pauline Laïlle
2016-Sep-21 18:24 UTC
[R] "invalid argument to unary operator" while selecting rows by name
Tanks for all your answers and for taking the time to help me better understand my mistake. I will take your advice and do some reading! Best, P. Le mercredi 21 septembre 2016, William Dunlap <wdunlap at tibco.com> a ?crit :> 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 > <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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 >> <javascript:_e(%7B%7D,'cvml','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/posti >> ng-guide.html >> > and provide commented, minimal, self-contained, reproducible code. >> >> ______________________________________________ >> R-help at r-project.org >> <javascript:_e(%7B%7D,'cvml','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/posti >> ng-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > >[[alternative HTML version deleted]]