Re: [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 <wdun...@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.4...@gmail.com > <javascript:_e(%7B%7D,'cvml','bgunter.4...@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, <ruipbarra...@sapo.pt >> <javascript:_e(%7B%7D,'cvml','ruipbarra...@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.lai...@gmail.com >> <javascript:_e(%7B%7D,'cvml','pauline.lai...@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 <ruipbarra...@sapo.pt >> <javascript:_e(%7B%7D,'cvml','ruipbarra...@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 ruipbarra...@sapo.pt >> <javascript:_e(%7B%7D,'cvml','ruipbarra...@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.lai...@gmail.com >> <javascript:_e(%7B%7D,'cvml','pauline.lai...@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" &q
Re: [R] "invalid argument to unary operator" while selecting rows by name
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 <ruipbarra...@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 ruipbarra...@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.lai...@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@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@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]] __ R-help@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.
Re: [R] "invalid argument to unary operator" while selecting rows by name
Hi, thanks for the answer. In this case, the row named "601" is not the 601st row of the table, but the 117th. data[601,] actually refers to a non existing row. I was wondering why data[-"601,] generates an error message whereas data["601",] does not? 2016-09-20 19:08 GMT+02:00 Bert Gunter <bgunter.4...@gmail.com>: > Hint: "601" is not 601. > > Have you gone through any R tutorials? > > 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 Tue, Sep 20, 2016 at 5:42 AM, Pauline Laïlle > <pauline.lai...@gmail.com> wrote: > > 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@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@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] "invalid argument to unary operator" while selecting rows by name
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@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.