[R] File > Save As...

Duncan Murdoch murdoch.duncan at gmail.com
Wed Apr 13 23:33:48 CEST 2011


On 13/04/2011 5:20 PM, Gene Leynes wrote:
> as of right now
>      x = function(a) print(a)
>      attr(x, "srcref")
> returns NULL in 2.13, am I doing something wrong?

There's a limitation to the debug information:  it can't be attached to 
a function whose body consists of a single simple expression like 
print(a).  If you put braces around print(a), it will be attached to the 
body of x:

Put this line into a file, and source it:

x <- function(a) { print(a) }

source("test.R")
attr(body(x), "srcref")

In case you're interested, the reason for this limitation is that there 
are some objects in R (NULL is the most obvious one) which can be a 
function body but which can't hold attributes.  At the time the debug 
info is added, the function hasn't been created, but its body has, so 
the attribute has to go there.

Duncan Murdoch

>
> (also, should I post this to a new thread, or the development thread?)
>
> About me: I like long walks on the beach, and this is my current version
> of R:
>>  t(as.data.frame(R.Version()))
>                 [,1]
> platform "i386-pc-mingw32"
> arch "i386"
> os "mingw32"
> system "i386, mingw32"
> status "RC"
> major "2"
> minor "13.0"
> year "2011"
> month "04"
> day "11"
> svn.rev "55409"
> language "R"
> version.string "R version 2.13.0 RC (2011-04-11 r55409)"
>>
>
>
> On Wed, Mar 16, 2011 at 2:44 PM, Gene Leynes <gleynes+r at gmail.com
> <mailto:gleynes%2Br at gmail.com>> wrote:
>
>
>     Thanks for showing me the link to the code / your response / your
>     work in general.
>
>     It seems that the real magic is happening in the call to the
>     function attributes, via the line
>     attr(x, "srcref")
>     I'm guessing that attributes must be defined somewhere deep inside
>     the R machinery (since I didn't find it as a file in base)...  And
>     there's probably not much benefit for me to know more beyond that.
>
>     So, I'll be looking forward to 2.13!
>
>
>
>     On Tue, Mar 15, 2011 at 3:37 PM, Duncan Murdoch
>     <murdoch.duncan at gmail.com <mailto:murdoch.duncan at gmail.com>> wrote:
>
>         On 15/03/2011 2:56 PM, Gene Leynes wrote:
>
>             The "getSrcFilename" function is exactly what I was trying
>             to describe, and
>             I'm excited to know that it's on it way!
>
>             I have tried to create that type of function, but I didn't
>             think it was
>             possible with currently available functions.  I would be
>             interested in
>             seeing how the new function works, maybe I'll check it out
>             using the google
>             code search
>             tool<http://www.google.com/codesearch?hl=en&lr=&q=lang%3Ar+&sbtn=Search
>             <http://www.google.com/codesearch?hl=en&lr=&q=lang%3Ar+&sbtn=Search>>(although
>
>             I usually have a hard time making sense of that code).
>
>
>         The source is available in
>
>         https://svn.r-project.org/R/trunk/src/library/utils/R/sourceutils.R
>
>         Duncan Murdoch
>
>
>             Please let me briefly clarify this part:
>
>              >  But it can.  If you open a script and choose save, it
>             will be saved to the
>              >  same place.
>              >
>
>             I just mean that when you do "save as..." R doesn't seem to
>             use the same
>             information that it uses during a normal save (the directory
>             or script
>             name).  In other applications like Microsoft Word, or
>             Python's IDLE (screen
>             shot attached) the user is shown a dialogue box with the
>             file name in the
>             current directory of that file.
>
>             This is a very minor annoyance though.  I only brought it up
>             because I
>             thought it would be easier to explain than asking about a
>             function that
>             would do the job of "getSrcFilename", which is really what I
>             was after.
>
>             I rarely upgrade my R versions, but this will definitely be
>             an occasion when
>             I do!
>
>             This makes me want to go back and look at the past release
>             notes to see what
>             other goodies I've been overlooking.
>
>             Thanks again,
>
>             Gene
>
>
>
>             On Mon, Mar 14, 2011 at 8:17 PM, Duncan
>             Murdoch<murdoch.duncan at gmail.com
>             <mailto:murdoch.duncan at gmail.com>>wrote:
>
>              >  On 11-03-14 8:12 PM, Gene Leynes wrote:
>              >
>              >>  Yes, I understand.  Normally I use Eclipse, which does
>             what I want for
>              >> "save as..."
>              >>
>              >>  The bigger issue is that R can't tell the location of
>             an open script,
>              >>  which makes it harder to create new versions of
>             existing work....
>              >>
>              >
>              >  But it can.  If you open a script and choose save, it
>             will be saved to the
>              >  same place.  Or do you mean an executing script?  There
>             are indirect ways to
>              >  find the name of the executing script.  For example,
>              >  in R-devel (to become 2.13.0 next month), you can do this:
>              >
>              >
>              >  cat("This file is ", getSrcFilename(function(){},
>             full=TRUE), "\n")
>              >
>              >  The getSrcFilename() function will be new in 2.13.0.
>               You can do the same
>              >  in earlier versions, but you need to program it yourself.
>              >
>              >  Duncan Murdoch
>              >
>              >
>              >
>              >
>              >
>              >>  Say you have some great analysis going in "Research
>             2011-01-01" with a
>              >>  folder for data, code, gui, other languages, excel,
>             whatever else.
>              >>
>              >>  Then you want to make a new folder for Research
>             2011-01-02" with the
>              >>  same structure.
>              >>
>              >>  Making sure that you're setting the right directory in
>             the new version
>              >>  adds a layer of complexity which would be nice to
>             avoid.  It would be
>              >>  really nice to just copy the folders, and let the
>             script detect it's own
>              >>  location so that it could read from the data
>             sub-directory, the gui's
>              >>  sub-directory, etc.  What I want to be able to do is
>             copy the tools I
>              >>  create into different client folders so that anyone can
>             just use the
>              >>  tool without changing the source code.... which is
>             simple for you or I,
>              >>  but prevents newcomers from using the tools.
>              >>
>              >>  Apparently I'm in the minority on the next part: but
>             the "save as" thing
>              >>  I was describing before seems very strange to me.  As I
>             teach new people
>              >>  R it's always kind of a hangup that requires a little
>             more explanation,
>              >>  but maybe it's the way I'm looking at it.
>              >>
>              >>  Thanks for your reply Duncan.
>              >>
>              >>
>              >>  On Mon, Mar 14, 2011 at 6:57 PM, Duncan Murdoch
>              >> <murdoch.duncan at gmail.com
>             <mailto:murdoch.duncan at gmail.com><mailto:murdoch.duncan at gmail.com
>             <mailto:murdoch.duncan at gmail.com>>>  wrote:
>              >>
>              >>     On 11-03-14 5:03 PM, Gene Leynes wrote:
>              >>
>              >>         As much as I love R, there are still the
>             occasional shortcomings.
>              >>
>              >>         I would love to find a solution to the "save
>             as..." problem.
>              >>
>              >>         Steps to reproduce the problem:
>              >>
>              >>             1. Open any version of he R GUI in Windows
>              >>             2. Choose "File>   Open" from the menu
>              >>             3. Open a script that is in a different
>             directory
>              >>             4. Choose "File>   Save As" from the menu
>              >>
>              >>
>              >>         In just about any other application you would be
>             presented with
>              >>         a GUI
>              >>         showing the current folder of the script and the
>             current name of
>              >>  the
>              >>         script.  You could then edit the name and save.
>              >>
>              >>         In R, you have to find the directory of the
>             script and the
>              >>         script name.  It
>              >>         can be annoying from a GUI perspective,
>             especially if you
>              >>         typically work in
>              >>         one directory and store your scripts somewhere
>             else, and the
>              >>         problem is
>              >>         worse when you have many script versions or
>             directories.
>              >>
>              >>         I know there are many ways to work around this
>             issue.
>              >>         I also know about the batch file project.
>              >>
>              >>         However, it seems like this is something that
>             users shouldn't
>              >>         *need* to work
>              >>         around.
>              >>
>              >>         I think this is related to the fact that R has
>             no way of knowing
>              >>  the
>              >>         location of any open script file.
>              >>         (Please correct me if I'm wrong about that last
>             part! )
>              >>
>              >>         I think this has come up before, but I couldn't
>             find it in my
>              >>         searches.
>              >>         Is this a problem for other users as well?
>              >>         Should I post this to the development list?
>              >>         Is this change known to be possible / impossible?
>              >>         Can I help make the change?
>              >>
>              >>
>              >>     I think it's simply a matter of different working
>             patterns.  R
>              >>     offers the current working directory to save into.
>               For some people,
>              >>     that's fine.  Others (like you) want some other default.
>              >>
>              >>     I don't think we want to make the editor so
>             elaborate that it caters
>              >>     to every taste.  If you want a better editor, there
>             are lots out
>              >>     there, including several that have good integration
>             with R (Emacs,
>              >>     Eclipse, WinEdt, TinnR, etc.)  I think it would be
>             best to use one
>              >>     of those editors, customized to suit your needs.
>              >>
>              >>     Duncan Murdoch
>              >>
>              >>
>              >>         Thanks
>              >>
>              >>         Gene
>              >>
>              >>                 [[alternative HTML version deleted]]
>              >>
>              >>         ______________________________________________
>              >> R-help at r-project.org
>             <mailto:R-help at r-project.org><mailto:R-help at r-project.org
>             <mailto:R-help at 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.
>              >>
>              >>
>              >>
>              >>
>              >
>
>
>
>



More information about the R-help mailing list