[R] Create macro_var in R

William Dunlap wdunlap at tibco.com
Fri Feb 5 19:01:40 CET 2016


If 'tab' is a data.frame then new.tab <- tab[[mvar]] is a column from that
data.frame, not a data.frame with one column.  new.tab <- tab[ , mvar,
drop=FALSE ] will give you a data.frame that you can add to with either of
    nvar <- "newName"
    new.tab[ , nvar] <- newColumn
    new.tab[[nvar]] <- newColumn

If you have a fixed name for the new column (not a variable containing
the name), you can also use
    new.tab <- cbind(new.tab, newName=newColumn)
    new.tab$newName <- newColumn


Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Fri, Feb 5, 2016 at 8:53 AM, Amoy Yang via R-help <r-help at r-project.org>
wrote:

>
>
>  One more question (see below). I cannot use macro-var, mvar, for creating
> new name, as shown below. Any advice is highly appreciated!
>
> > mvar<-"pop"
> > new.pop<-tab[[mvar]]; new.pop
>  [1]  698 1214 1003 1167 2549  824  944 1937  935  570    0
> > new.tab[[mvar]]<-d$pop;
> Error in new.tab[[mvar]] <- d$pop : object 'new.tab' not found
>
>     On Thursday, February 4, 2016 11:02 AM, Amoy Yang <amoy_y at yahoo.com>
> wrote:
>
>
>  This works although it looks rare by using min(",key,"). Don't know why
> but just have to remember it. This is a tough part in R.
> Thanks for helps!
> Amoy
>
>     On Wednesday, February 3, 2016 5:25 PM, Gabor Grothendieck <
> ggrothendieck at gmail.com> wrote:
>
>
>  See
>
>   Example 5.  Insert Variables
>
> on the sqldf home page.
>
>   https://github.com/ggrothendieck/sqldf
>
>
> On Wed, Feb 3, 2016 at 2:16 PM, Amoy Yang via R-help
> <r-help at r-project.org> wrote:
> > First, MVAR<-c("population) should be the same as "population'". Correct?
> > You use tab[[MVAR]] to refer to "population" where double [[...]]
> removes double quotes "...", which seemingly work for r-code although it is
> tedious in comparison direct application in SAS %let MVAR=population. But
> it does not work for sqldef in R as shown below.
> >
> >> key<-"pop"
> >> library(sqldf)
> >> sqldf("select grade, count(*) as cnt, min(tab[[key]]) as min,
> > + max(pop) as max, avg(pop) as mean, median(pop) as median,
> > + stdev(pop) as stdev from tab group by grade")
> > Error in sqliteSendQuery(con, statement, bind.data) :
> >  error in statement: near "[[key]": syntax error
> >
> >
> >
> >
> >    On Wednesday, February 3, 2016 12:40 PM, "ruipbarradas at sapo.pt" <
> ruipbarradas at sapo.pt> wrote:
> >
> >
> >  Hello,
> >
> > You can't use tab$MVAR but you can use tab[[MVAR]] if you do MVAR <-
> "population" (no need for c()).
> >
> > Hope this helps,
> >
> > Rui Barradas
> >  Citando Amoy Yang via R-help <r-help at r-project.org>:
> > population is the field-name in data-file (say, tab). MVAR<-population
> takes data (in the column of population) rather than field-name as done in
> SAS:  %let MVAR=population;
> > In the following r-program, for instance, I cannot use ... tab$MVAR...or
> simply MVAR itself since MVAR is defined as "population" with double quotes
> if using MVAR<-c("population")
> >
> >    On Wednesday, February 3, 2016 11:54 AM, Duncan Murdoch <
> murdoch.duncan at gmail.com> wrote:
> >
> >
> > On 03/02/2016 12:41 PM, Amoy Yang via R-help wrote:
> >  There is a %LET statement in SAS: %let MVAR=population; Thus, MVAR can
> be used through entire program.
> > In R, I tried MAVR<-c("population"). The problem is that MAVR comes with
> double quote "...." that I don't need. But MVAR<-c(population) did NOT work
> out. Any way that double quote can be removed as done in SAS when creating
> macro_var?
> > Thanks in advance for helps!
> > R doesn't have a macro language, and you usually don't need one.
> >
> > If you are only reading the value of population, then
> >
> > MAVR <- population
> >
> > is fine.  This is sometimes the same as c(population), but in general
> > it's different:  c() will remove some attributes, such as
> > the dimensions on arrays.
> >
> > If you need to modify it in your program, it's likely more complicated.
> > The normal way to go would be to put your code in a function, and have
> > it return the modified version.  For example,
> >
> > population <- doModifications(population)
> >
> > where doModifications is a function with a definition like
> >
> > doModifications <- function(MAVR) {
> >    # do all your calculations on MAVR
> >    # then return it at the end using
> >    MAVR
> > }
> >
> > Duncan Murdoch
> >
> >
> >
> >        [[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.htmlandprovide 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.
>
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
>
>
>
>
>
>
>         [[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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list