[R] Why don't the comments appear in the function?

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Mon Nov 25 21:23:23 CET 2019


On 25/11/2019 2:27 p.m., Neal Fultz wrote:
> Hi Mik,
> 
> Echoing Bert and Duncan's suggestions, please see also ?srcref and
> ?getSrcref
> and consider upgrading to a currently supported version of R.
> 
> I'd also call out the "keep.source" installation option as important if
> your functions
> are inside a package - there is some discussion around this at
> https://github.com/DeclareDesign/DesignLibrary/issues/50 and linked issues
> from
> the last time I encountered this weird corner of R.
> 
> If anyone finds a better solution (or for the related problem of preserving
> whitespace),
> I would be interested as well.

Preserving comments and whitespace are definitely the same issue.  I'm 
not sure what solution you're trying to improve, but if you want source 
kept in packages, run

Sys.setenv(R_KEEP_PKG_SOURCE="yes")

before doing the install using install.packages(), or use the command 
line option with R CMD INSTALL.

If you want the source kept for your own function regardless of the 
user's wishes, I think you'll have to do some weird things in your 
source files.  For example, if pkg::fn is defined in the file 
pkg/R/fn.R, you could put this into your zzz.R file (any name is fine, 
as long as it collates after fn.R):

  sys.source("R/fn.R", keep.source = TRUE, envir = getNamespace("pkg"))

This will replace fn with a new copy that has source references.  It 
assumes that the namespace has been created at this point in 
installation; I think that's true, but there may be cases where it's not 
true, in which case you'll need to use something like environment(fn) as 
the envir argument.

Duncan Murdoch

> 
> Very respectfully,
> 
> Neal Fultz
> 
> On Mon, Nov 25, 2019 at 10:49 AM Duncan Murdoch <murdoch.duncan using gmail.com>
> wrote:
> 
>> On 24/11/2019 6:06 p.m., bickis using math.usask.ca wrote:
>>> I have made a list in which each element is a function.   If I print
>>> individual elements of the list, then the function code is shown along
>>> with embedded comments.  However, if I print the list or sublist, then
>> the
>>> function code is shown without comments.   Why (and how) are the comments
>>> hidden?
>>
>> Hi Mik.  I see the same behaviour as Bert, not what you see.
>>
>> Generally the comments will be shown if the "srcref" attribute is
>> attached to the function, and it is a valid one.  That shouldn't change
>> between looking at flist[[3]] and flist[3].  If it's not there or not
>> valid, you'll see a deparsed version of the function; that's what your
>> flist[3]$btv looks like.
>>
>> It's possible this is R 3.3.2-specific; that's a relatively old version
>> now, but I don't know of any change that would cause this.  Can you show
>> us the code that you used to create flist, or enough of it to show this
>> behaviour?  Showing us (or me privately) dput(flist) might be enough to
>> see what's going on.
>>
>> Duncan Murdoch
>>
>>>
>>>> flist[[3]]
>>> function(y,brackets,rates){
>>>        # Calculates before-tax income required to realized value y
>>>
>>   ints<-c(0,cumsum(diff(brackets)*rates[1:(length(rates)-1)]))-brackets*rates
>>>        x<-(y+ints)/(1-rates)
>>>        x[sum(x>brackets)]
>>> }
>>>
>>>
>>>> flist[3]
>>> $btv
>>> function (y, brackets, rates)
>>> {
>>>       ints <- c(0, cumsum(diff(brackets) * rates[1:(length(rates) -
>>>           1)])) - brackets * rates
>>>       x <- (y + ints)/(1 - rates)
>>>       x[sum(x > brackets)]
>>> }
>>>
>>> I am running R 3.3.2 on Mac OS X  10.10.5
>>>
>>> Mik Bickis
>>>
>>> ______________________________________________
>>> R-help using 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.
>>>
>>
>> ______________________________________________
>> R-help using 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.
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using 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