While my problem is solved, if not elegantly, data.table is widely used in packages.
Any package builders using data.table who have encountered and solved this problem? Sent from my iPhone > On Jan 28, 2025, at 4:52 PM, avi.e.gr...@gmail.com wrote: > > That is an interesting fix Duncan suggested and it sounds now like > everything WORKED as intended in data.table except that any checker being > used externally is not able to del with things that look like a variable but > are actually not a variable currently visible except within a function that > is doing deferred evaluation. In this case, it recognizes the raw unevaluated > string as being the name of a column within the data.table. > > I would guess this can cause similar anomalies in the dplyr package when it > does the same kinds of non-standard evaluation and I wonder even about the > with() command or the within() which internally expand columns out so that > commands using them work. > > But setting the variable to NULL bothers me. Yes, it shuts up a check to see > if the variable exists. But is there any reason you could not have a global > variable and any number of local variables with the same name as the column, > especially if non-standard evaluation only looks for the column and ignores > other instances of the name in other environments? Setting it to NULL > unconditionally could mess up some programs. > > There are ways to set it conditionally and save the previous value and > restore it after but this gets to be lots more work ... > > > -----Original Message----- > From: R-help <r-help-boun...@r-project.org> On Behalf Of Naresh Gurbuxani > Sent: Tuesday, January 28, 2025 4:25 PM > To: Duncan Murdoch <murdoch.dun...@gmail.com> > Cc: r-help@r-project.org > Subject: Re: [R] R CMD check says no visible binding for global variable > > This solution worked. > Thanks > > Sent from my iPhone > >>> On Jan 28, 2025, at 3:09 PM, Duncan Murdoch <murdoch.dun...@gmail.com> >>> wrote: >>> >>> On 2025-01-28 1:55 p.m., Naresh Gurbuxani wrote: >>> Data.frame is returned by SQL query. It does have column names. In the >>> function, I make small changes to some columns. >>> Something like: >>> Myquery <- “SELECT date, price, stock FROM stocktab WHERE stock = ‘ABC’ AND >>> date > ‘2025-01-01’;” >>> Prices <- dbGetQuery(con, myquery) >>> SetDT(Prices) >>> Prices[, date = as.Date(date)] >> >> If Prices were a regular dataframe at this point, then the message would be >> correct. You can't calculate `as.Date(date)` without telling R where to look >> for the `date` variable. >> >> However, you have set it to be a data.table instead. They use nonstandard >> evaluation and look up `date` in the columns of `Prices`, and things work. >> However, R's checks don't know this, so you still get the complaint. >> >> The fix given by others is easiest: sometime before this add a line >> >> date <- NULL >> >> and it will satisfy the check code. >> >> Duncan Murdoch >>> R CMD check say “no visible binding for global variable ‘date’” >>> Sent from my iPhone >>>> On Jan 28, 2025, at 1:24 AM, Sorkin, John <jsor...@som.umaryland.edu> >>>> wrote: >>> >>> There you go, once again helping strengthen ;) >>> John >>> Get Outlook for iOS<https://aka.ms/o0ukef> >>> ________________________________ >>> From: R-help <r-help-boun...@r-project.org> on behalf of >>> avi.e.gr...@gmail.com <avi.e.gr...@gmail.com> >>> Sent: Tuesday, January 28, 2025 12:01:25 AM >>> To: 'Naresh Gurbuxani' <naresh_gurbux...@hotmail.com>; r-help@r-project.org >>> <r-help@r-project.org> >>> Subject: Re: [R] R CMD check says no visible binding for global variable >>> Naresh, >>> I am not sure how you are creating your data.frame so it has no, I think, >>> column names. There are two scenarios including one where it is not really >>> a valid data.frame and one where it can be handled before any other use as >>> shown below. If it cannot be used, you might need to modify how your SQL or >>> the function you call creates it so it includes either names it chooses or >>> that you supply. >>> One silly solution if to give your data frame names before using it later. >>> In prticulr, if you know what the columns contain, you can choose suitable >>> names like this if you have exactly three columns: >>>> colnames(mydata) <- c("first", "second", "third") >>>> mydata >>> first second third >>> 1 1 2 3 >>> If you have a varying number of columns and don't care what the names are, >>> you can make n names that look like temp1, temp2, ... tempn like this: >>>> paste0("temp", 1:ncol(mydata)) >>> [1] "temp1" "temp2" "temp3" >>> Obviously, you substitute in whatever your data.frame is called. >>> So the code to add names for columns looks like: >>>> colnames(mydata) <- paste0("temp", 1:ncol(mydata)) >>>> mydata >>> temp1 temp2 temp3 >>> 1 1 2 3 >>> -----Original Message----- >>> From: R-help <r-help-boun...@r-project.org> On Behalf Of Naresh Gurbuxani >>> Sent: Monday, January 27, 2025 5:46 PM >>> To: r-help@r-project.org >>> Subject: [R] R CMD check says no visible binding for global variable >>> I have written a function which returns an SQL query result as a >>> data.frame. Each column of data.frame is a variable not explicitly defined. >>> For every column name, R CMD check says ‘no visible binding for global >>> variable <name>. Status: 1 NOTE >>> Is it possible to tell R CMD check that these variables are OK? >>> Thanks, >>> Naresh >>> Sent from my iPhone >>> ______________________________________________ >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide >>> https://www.r-project.org/posting-guide.html<https://www.r-project.org/posting-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<https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide >>> https://www.r-project.org/posting-guide.html<https://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 >>> https://www.r-project.org/posting-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 https://www.R-project.org/posting-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 https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.