пакет?
                  
                  
                  Обнаружил после установки из-за подсказок IDE, getNamespaceExports('my_package') выдает примерно такой список
                  
                  
                   [1] "setRcppClass"               "exposeClass"               
                  
                  
                   [3] "prompt"                     ".__C__C++Field"            
                  
                  
                   [5] "library.dynam.unload"       "populate"                  
                  
                  
                   [7] "initialize"                 ".__T__$<-:base"            
                  
                  
                   [9] "sizeof"                     "cppFunction"               
                  
                  
                  [11] "getRcppVersion"             ".__C__C++Function"         
                  
                  
                  [13] "evalCpp"                    ".__C__C++Constructor"      
                  
                  
                  [15] "loadRcppClass"              ".__T__prompt:utils"        
                  
                  
                  [17] ".__C__C++OverloadedMethods" "LdFlags"                   
                  
                  
                  [19] "hllrst_run_threads"         ".__T__show:methods"        
                  
                  
                  [21] "loadModule"                 ".__T__[<-:base"            
                  
                  
                  [23] "cpp_object_initializer"     ".__T__.DollarNames:utils"  
                  
                  
                  [25] "compileAttributes"          ".__T__initialize:methods"  
                  
                  
                  [27] ".__C__C++Object"            "system.file"               
                  
                  
                  [29] ".__T__[[<-:base"            "sourceCpp"                 
                  
                  
                  [31] "cpp_object_dummy"           "Rcpp.plugin.maker"         
                  
                  
                  [33] "RcppLdFlags"                ".__C__RcppClass"           
                  
                  
                  [35] "Module"                     ".__T__[:base"              
                  
                  
                  [37] "registerPlugin"             "hllrst_random_number"      
                  
                  
                  [39] "loadRcppModules"            ".DollarNames"              
                  
                  
                  [41] ".__C__C++Class"             ".__T__formals<-:base"      
                  
                  
                  [43] "formals<-"                  "demangle"                  
                  
                  
                  [45] ".__T__$:base"               ".__C__Module"              
                  
                  
                  [47] "Rcpp.package.skeleton"      "show"                      
                  
                  
                  который, естественно, включает и полезные функции.
                  
                  
                
Тут по сути все зависимости твоего пакета представлены, в том числе от Rcpp.
Я понимаю, но проблема в другом. Если я возьму другой пакет, в котором есть несколько CPP функций, собранный через Rcpp и roxygen2 мной же, то там в публичном экспорте собственно то, что я задекларировал, и никакого мусора. Здесь же - в минимальном пакете с буквально двумя экспортируемыми CPP функциями - куча мусора, который видно (на мой субъективный взгляд) быть не должно. Вопрос почему так, я подумал может кто с таким сталкивался и знает в чем дело. Ощущение, что какая-то зависимость прописана неправильно
Как пакет собираешь?
Что в импортах? Должно быть: importFrom(Rcpp,evalCpp) useDynLib(mypkg, .registration = TRUE)
Это из-за devtools::load_all(). > library(uaparser) > getNamespaceExports("uaparser") [1] "parse_browser" "parse_device_type" "parse_user_agent" [4] "update_regexes" "parse_os" "parse_device" > devtools::load_all(".") Loading uaparser > getNamespaceExports("uaparser") [1] "library.dynam.unload" "system.file" [3] "parse_browser" "parse_device_type" [5] "_uaparser_uap_release" "download.file" [7] "uap_release" "_uaparser_parse_device" [9] "evalCpp" "parse_user_agent" [11] "_uaparser_uap_init" "_uaparser_parse_os" [13] "update_regexes" "parse_os" [15] "parse_device" "_uaparser_parse_user_agent" [17] "_uaparser_parse_browser" "_uaparser_parse_device_type" [19] "uap_init" "onUnload"
# Generated by roxygen2: do not edit by hand importFrom(Rcpp,sourceCpp) useDynLib(hellorust)
load_all нигде не используется
Значит где-то используется. Его RStudio может где-то вызывать. Попробуй поставить пакет через R CMD build/R CMD INSTALL и посмотреть Rscript -e 'getNamespaceExports("mypkg")'.
Ок, спасибо, буду смотреть где этот вызов мог затеряться
У меня только evalCpp импортируется. https://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-package.pdf Пункт 2.8.
Ну у меня в нормальном пакете так же, а тут просто я попытался скрестить нескрещиваемое и получается не очень)
Обсуждают сегодня