[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