繁体   English   中英

R:将辅助功能与CRAN软件包中的主要功能区分开

[英]R: Distinguish helper functions from main function in CRAN packages

如何在包含许多功能的程序包中将助手功能与主要功能区分开? 有没有办法可以通过一些标准的标识符将它们分开?

例如,我在R会话中使用set软件包,如下所示。 我如何从下面列出的列表中将帮助程序功能与主要功能区分开。 我可以通过阅读文档来做到这一点(有时将它明确地记录为辅助功能),但是R中是否实现了标准标识符,以说该功能是辅助功能还是主要功能?

library(sets)

ls("package:sets")
[1] "%..%"                              "%<%"                               "%<=%"                             
[4] "%>%"                               "%D%"                               "%e%"                              
[7] "%is%"                              "as.cset"                           "as.gset"                          
[10] "as.interval"                       "as.set"                            "as.tuple"                         
[13] "binary_closure"                    "binary_reduction"                    "canonicalize_set_and_mapping"     
[16] "charfun_generator"                 "closure"                           "cset"                             
[19] "cset_bound"                        "cset_cardinality"                  "cset_cartesian"                   
[22] "cset_charfun"                      "cset_combn"                        "cset_complement"                  
[25] "cset_concentrate"                  "cset_contains_element"             "cset_core"                        
[28] "cset_defuzzify"                    "cset_difference"                   "cset_dilate"                      
[31] "cset_dissimilarity"                "cset_has_missings"                 "cset_height"                      
[34] "cset_intersection"                 "cset_is_crisp"                     "cset_is_empty"                    
[37] "cset_is_equal"                     "cset_is_fuzzy_multiset"            "cset_is_fuzzy_set"                
[40] "cset_is_multiset"                  "cset_is_proper_subset"             "cset_is_set"                      
[43] "cset_is_set_or_fuzzy_set"          "cset_is_set_or_multiset"           "cset_is_subset"                   
[46] "cset_matchfun"                     "cset_matchfun<-"                   "cset_mean"                        
[49] "cset_memberships"                  "cset_normalize"                    "cset_orderfun"                    
[52] "cset_orderfun<-"                   "cset_outer"                        "cset_peak"                        
[55] "cset_power"                        "cset_product"                      "cset_similarity"                  
[58] "cset_sum"                          "cset_support"                      "cset_symdiff"                     
[61] "cset_transform_memberships"        "cset_union"                        "cset_universe"                    
[64] "e"                                 "fuzzy_bell"                        "fuzzy_bell_gset"                  
[67] "fuzzy_cone"                        "fuzzy_cone_gset"                   "fuzzy_inference"                  
[70] "fuzzy_logic"                       "fuzzy_normal"                      "fuzzy_normal_gset"                
[73] "fuzzy_partition"                   "fuzzy_pi3"                         "fuzzy_pi3_gset"                   
[76] "fuzzy_pi4"                         "fuzzy_pi4_gset"                    "fuzzy_rule"                       
[79] "fuzzy_sigmoid"                     "fuzzy_sigmoid_gset"                "fuzzy_system"                     
[82] "fuzzy_trapezoid"                   "fuzzy_trapezoid_gset"              "fuzzy_triangular"                 
[85] "fuzzy_triangular_gset"             "fuzzy_tuple"                       "fuzzy_two_normals"                
[88] "fuzzy_two_normals_gset"            "fuzzy_variable"                    "gset"                             
[91] "gset_bound"                        "gset_cardinality"                  "gset_cartesian"                   
[94] "gset_charfun"                      "gset_combn"                        "gset_complement"                  
[97] "gset_concentrate"                  "gset_contains_element"             "gset_core"                        
[100] "gset_defuzzify"                    "gset_difference"                   "gset_dilate"                      
[103] "gset_dissimilarity"                "gset_has_missings"                 "gset_height"                      
[106] "gset_intersection"                 "gset_is_crisp"                     "gset_is_empty"                    
[109] "gset_is_equal"                     "gset_is_fuzzy_multiset"            "gset_is_fuzzy_set"                
[112] "gset_is_multiset"                  "gset_is_proper_subset"             "gset_is_set"                      
[115] "gset_is_set_or_fuzzy_set"          "gset_is_set_or_multiset"           "gset_is_subset"                   
[118] "gset_mean"                         "gset_memberships"                  "gset_normalize"                   
[121] "gset_outer"                        "gset_peak"                         "gset_power"                       
[124] "gset_product"                      "gset_similarity"                   "gset_sum"                         
[127] "gset_support"                      "gset_symdiff"                      "gset_transform_memberships"       
[130] "gset_union"                        "gset_universe"                     "integers"                         
[133] "integers2reals"                    "interval"                          "interval_complement"              
[136] "interval_contains_element"         "interval_difference"               "interval_division"                
[139] "interval_domain"                   "interval_intersection"             "interval_is_bounded"              
[142] "interval_is_closed"                "interval_is_countable"             "interval_is_degenerate"           
[145] "interval_is_empty"                 "interval_is_equal"                 "interval_is_finite"               
[148] "interval_is_greater_than"          "interval_is_greater_than_or_equal" "interval_is_half_bounded"         
[151] "interval_is_left_bounded"          "interval_is_left_closed"           "interval_is_left_open"            
[154] "interval_is_left_unbounded"        "interval_is_less_than"             "interval_is_less_than_or_equal"   
[157] "interval_is_proper"                "interval_is_proper_subinterval"    "interval_is_right_bounded"        
[160] "interval_is_right_closed"          "interval_is_right_open"            "interval_is_right_unbounded"      
[163] "interval_is_subinterval"           "interval_is_unbounded"             "interval_is_uncountable"          
[166] "interval_measure"                  "interval_power"                    "interval_product"                 
[169] "interval_sum"                      "interval_symdiff"                  "interval_union"                   
[172] "is.charfun_generator"              "is.cset"                           "is.gset"                          
[175] "is.interval"                       "is.set"                            "is.tuple"                         
[178] "is_element"                        "LABEL"                             "LABELS"                           
[181] "make_set_with_order"               "matchfun"                          "naturals"                         
[184] "naturals0"                         "pair"                              "reals"                            
[187] "reals2integers"                    "reduction"                         "set"                              
[190] "set_cardinality"                   "set_cartesian"                     "set_combn"                        
[193] "set_complement"                    "set_contains_element"              "set_dissimilarity"                
[196] "set_intersection"                  "set_is_empty"                      "set_is_equal"                     
[199] "set_is_proper_subset"              "set_is_subset"                     "set_outer"                        
[202] "set_power"                         "set_similarity"                    "set_symdiff"                      
[205] "set_union"                         "sets_options"                      "singleton"                        
[208] "triple"                            "tuple"                             "tuple_is_ntuple"                  
[211] "tuple_is_pair"                     "tuple_is_singleton"                "tuple_is_triple"                  
[214] "tuple_outer"  

通常,除非使用package_name:::helper_function_name语法,否则不会导出“辅助功能”(定义为:主要功能使用的功能,通常不直接由最终用户使用),并且这些功能不可见。 如果某个功能可见并记录下来,则通常是主要功能。 因此,如果您想查看主要功能,只需使用ls

ls("package:sets")

如果需要所有功能(主+辅助):

ls(getNamespace("sets"))

最后,要获得辅助函数,请使用setdiff

setdiff(ls(getNamespace("sets")), ls("package:sets"))

有关一些讨论,请参见此SO Q / A。

一个潜在的歧义是,有时S3方法未明确导出,即使它们打算用作“主要”功能。

R库的NAMESPACE文件应包含导出的列表-已公开的函数。 因此,对公开(因此是公共)和非公开(因此是内部/私有)功能都有很好的定义。 “ main”和“ helper”功能没有正式定义。 您可能认为只应公开“主要”功能,但我认为这并不明确。

懒惰的开发人员有时会在NAMESPACE文件中包含exportPattern("^[[:alpha:]]+") ,从而公开所有功能。 在那种情况下,我可能会怀疑库的公开函数都与main / helper函数混合在一起。 但是,当我检查setsNAMESPACE文件时,它的组织非常好。 因此,我相信sets的公开功能可以很好地维护和必要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM