[R] Removing variables from data frame with a wile card

Andrew Simmons @kw@|mmo @end|ng |rom gm@||@com
Mon Feb 13 03:52:27 CET 2023


What I meant is that that

mydata[, !grepl("^yr", colnames(mydata)), drop = FALSE]

and

mydata[!grepl("^yr", colnames(mydata))]

should be identical. Some people would prefer the first because the
indexing looks the same as matrix indexing, whereas some people would
prefer the second because it is more efficient. However, I would argue
it is exactly as efficient. You can see from the first few lines of
`[.data.frame` when the first index is missing and the second is
provided, it does almost the same thing as if only the first index
provided.

On Sun, Feb 12, 2023 at 9:38 PM Steven Yen <styen using ntu.edu.tw> wrote:
>
> x[“V2”] would retain columns of x headed by V2. What I need is the opposite——I need a data grime with those columns excluded.
>
> Steven from iPhone
>
> On Feb 13, 2023, at 9:33 AM, Rolf Turner <r.turner using auckland.ac.nz> wrote:
>
> 
> On Sun, 12 Feb 2023 14:57:36 -0800
> Jeff Newmiller <jdnewmil using dcn.davis.ca.us> wrote:
>
> x["V2"]
>
>
> is more efficient than using drop=FALSE, and perfectly normal syntax
>
> (data frames are lists of columns).
>
>
> <SNIP>
>
> I never cease to be amazed by the sagacity and perspicacity of the
> designers of R.  I  would have worried that x["V2"] would turn out to be
> a *list* (of length 1), but no, it retains the data.frame class, which
> is clearly the Right Thing To Do.
>
> cheers,
>
> Rolf
>
> --
> Honorary Research Fellow
> Department of Statistics
> University of Auckland
> Stats. Dep't. phone: +64-9-373-7599 ext. 89622
> Home phone: +64-9-480-4619
>



More information about the R-help mailing list