I believe the suggestion was that you should alternatively write:

.Call("seq_root2tip", nt$edge, length(nt$tip.label), nt$Nnode, PACKAGE = "ape")

however, that generates the following note that CRAN is very unlikely to accept:

* checking foreign function calls ... NOTE
Foreign function call to a different package:
  .Call("seq_root2tip", ..., PACKAGE = "ape")
See chapter 'System and foreign language interfaces' in the 'Writing R
Extensions' manual.

The other possibility is adding:

importFrom(ape, seq_root2tip)

to your NAMESPACE and not modifying your code, but that generates a
different note:

* checking foreign function calls ... NOTE
Registration problem:
  symbol 'seq_root2tip' not in namespace:
   .Call(seq_root2tip, ...)
See chapter 'System and foreign language interfaces' in the 'Writing R
Extensions' manual.

Your best bet is to ask the maintainers of package:ape to add and
export an R function like this:

idk <- function (...)
.Call(seq_root2tip, ...)

There are also ways to do it in C using R_RegisterCCallable and
R_GetCCallable but that might be too complicated for something like
this.

On Thu, Jul 3, 2025 at 6:33 PM Sharon Bewick <sbew...@clemson.edu> wrote:
>
> Thanks so much for the tips!
>
> I think I’ve fixed #2. But I’m not sure what you mean by #1. Where should the 
> "seq_root2tip" with PACKAGE="ape" go? In the NAMESPACE file? In the 
> Description file? Somewhere in the code?
>
> So sorry for not understanding!
>
> Thanks!
> Sharon
>
> From: Michael Chirico <michaelchiri...@gmail.com>
> Date: Thursday, July 3, 2025 at 4:13 PM
> To: Sharon Bewick <sbew...@clemson.edu>
> Cc: R Package Development <r-package-devel@r-project.org>
> Subject: Re: [R-pkg-devel] Two errors
>
> This Message Is From An External Sender: Use caution when opening links or 
> attachments if you do not recognize the sender.
> 1. all functions in R are variables. You can "trick" code tools by writing 
> seq_root2tip=NULL in the same scope but consider (a) C routines are typically 
> part of a package's private interface (b) it might be preferable to use the 
> string "seq_root2tip" with PACKAGE="ape"
>
> 2. phytree is not the same as phytree<- : importFrom(phyloseq, "phytree<-") 
> is what you want assuming it's exported)
>
> (c.f. `x = phyteee(...)` vs. `phytree(x) <- ...`)
>
> Mike C
> On Thu, Jul 3, 2025, 2:57 PM Sharon Bewick 
> <sbew...@clemson.edu<mailto:sbew...@clemson.edu>> wrote:
> 1. I’m trying to upload my R package. However, I use the ape function 
> seq_root2tip but for the sake of speed am calling it using .Call:
>
> toroot<-.Call(seq_root2tip, nt$edge, length(nt$tip.label), nt$Nnode)
>
> How do I get R to recognize the seq_root2tip function from ape in this C 
> call? It is throwing up a NOTE that is getting my package rejected:
>
> shade_branch: no visible binding for global variable ‘seq_root2tip’
>
> but seq_root2tip is a function, not a global variable.
>
> 2. I’m also getting a NOTE about: no visible global function definition for 
> ‘phy_tree<-’
>
> I have declared phy_tree in the NAMESPACE file: importFrom(phyloseq,phy_tree)
>
> I don’t know what the problem is…
>
> Thanks!
> Sharon
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel@r-project.org<mailto:R-package-devel@r-project.org> mailing 
> list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to