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 <gleyne...@gmail.com
<mailto:gleynes%...@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.dun...@gmail.com <mailto:murdoch.dun...@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.dun...@gmail.com
            <mailto:murdoch.dun...@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.dun...@gmail.com
            <mailto:murdoch.dun...@gmail.com><mailto:murdoch.dun...@gmail.com
            <mailto:murdoch.dun...@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@r-project.org
            <mailto:R-help@r-project.org><mailto:R-help@r-project.org
            <mailto: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.

Reply via email to