Hi. On Sat, Jan 9, 2010 at 6:16 PM, Hao Cen <h...@andrew.cmu.edu> wrote: > Hi Henrik, > > Thanks for your suggestion. I created a directory with 10 R files and > tried the following and measured its time > > system.time(sourceDirectory("~/fun", modifiedOnly = F)) > system.time(sourceDirectory("~/fun", modifiedOnly = T)) > > But the second line seems to spend as much time as the first line, I > thought the second line would be faster since no modification is made.
Use modifiedOnly=TRUE the first time too, and you'll see it'll work the 2nd time. When you call it the first time, R consider it as "modified" (since last time), because it has never seen the code before (in that R session). If you add some verbose output in your scripts, you'll definitely see when the scripts get sourced. I guess you could say it should the way you did it, but the way it is currently designed/implemented is that it does not record the last "source" time unless you use modifiedOnly=TRUE. Next release will also support what you did. > > Also the first line reports a warning as follows > In readLines(con = fh) : > incomplete final line found on "~/fun/util1.R" > I don't see such a warning when I use source. Unrelated. Nothing to worry about. I've added readLines(con=fh, warn=FALSE) for the next release to get rid of such warnings. /Henrik > > Maybe the two issues are related. Please advise. > > thanks > > Jeff > > > On Fri, January 8, 2010 7:56 pm, Henrik Bengtsson wrote: >> library("R.utils"); sourceDirectory("myRFiles/", modifiedOnly=TRUE); >> >> See ?sourceDirectory (regardless what the Rd help say, any '...' >> argument is passed to sourceTo()). >> >> /Henrik >> >> >> On Fri, Jan 8, 2010 at 7:38 AM, Hao Cen <h...@andrew.cmu.edu> wrote: >> >>> Hi, >>> >>> >>> I wonder what is a better way to organize a lot of R source files. I >>> have a lot of utility functions written and store them in several source >>> files (e.g util1.R, util2.R,..utilN.R). I also have a master file in >>> which the source command is used to load all the util.R files. When I >>> need to use the utility functions in a new project, I create a new R >>> file (e.g main.R) in which I "source" the master file. >>> >>> The problem with this approach is that anytime a single utility >>> function is modified, I need to rerun the source command in main.R to >>> load the master file, which loads all the utility R files via a loop >>> over each file. Sometimes I have to wait for 10 seconds to get them all >>> loaded. Sometimes I forget to run the source command. Is there a way in >>> R to 1) >>> only reload the file changed (like a make utility) when I run source on >>> all utility files and/or even better 2) reload the changed utility >>> files, when I run a command that use one of those utility functions, >>> without the need for me to source those files. >>> >>> Not sure if packaging solves this issue because the library command has >>> be used every time a utility function is modified and in addition the >>> package has to be rebuilt. I don't worry about sharing the source files >>> at this moment as I am the only user of those utility files. >>> >>> This may be a common issue many R users face. I wonder how other R >>> users solve this issue. >>> >>> thanks >>> >>> Jeff >>> >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> 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. >>> >> >> > > > ______________________________________________ R-help@r-project.org mailing list 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.