[R] Variable names conflict

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Thu Oct 15 21:21:04 CEST 2015


My strategy is to be specific about the names of columns at the top level. As I see it, letting functions internally come up with their own column names makes fragile code.

foo <- function(df, newColName ) {
 x <- setNames( df[, 1, drop = FALSE], newColName )
 dfOut <- data.frame(df, x)
 dfOut
}
Data <- data.frame(x = c(1, 2), y = c(3, 4))
foo(Data, "z") #at this point you know what names would collide and can choose wisely

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

On October 15, 2015 9:42:42 AM PDT, Axel Urbiz <axel.urbiz at gmail.com> wrote:
>Hello,
>
>I have a variable named 'x' defined inside a function, which   may
>conflict
>with a variable name supplied in the argument to the function. What is
>the
>best practice to avoid this conflict?
>
>foo <- function(df) {
>  x <- df[, 1, drop = FALSE]
>  dfOut <- data.frame(df, x)
>  dfOut
>
>}
>Data <- data.frame(x = c(1, 2), y = c(3, 4))
>foo(Data)
>
>  x y x.1
>1 1 3   1
>2 2 4   2
>
>The following solution doesn't look nice to me…
>
>foo <- function(df) {
>  if (any(names(df) == 'x'))
>    stop("x cannot be a variable name in the data frame")
>  x <- df[, 1, drop = FALSE]
>  dfOut <- data.frame(df, x)
>  dfOut
>
>}
>
>Thanks!
>Axel.
>
>	[[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.



More information about the R-help mailing list