I think you should organize your package and code as you feel most comfortable with; this is your package after all. NAMESPACE can be used to control what is opened or not to the user, as others have mentioned, and you do not need to document all the functions, only the main user-defined functions, adding \alias{} tags to the Rd files for all the support functions that you are not You want people to know or hide too much on the package.internals.Rd page.
Speaking of which, if you want people to help you develop your package or work with it and do amazing things, the better organized it will be easier. Thus, lay out your functions logically, perhaps one file per function, named after the name of the function, or group all related functions into one R file, for example. But be consistent in what approach you do.
If you have common functions that are more widely used, consider splitting these functions into a separate package that others can use, without having to rely on your mega package with an additional hard drive that is more specific. Then your package may depend on this general package, as well as on packages of other authors. But do not break packages just to make them smaller.
source share