2014-06-26 13 views
12

Tôi đã viết một gói R để tích hợp với hồ sơ y tế điện tử. Tôi nghĩ rằng tôi đã thêm chính xác nhập khẩu và phụ thuộc trong tệp DESCRIPTION và ghi lại mọi thứ qua roxygen2, nhưng trên ba hàm của tôi (tất cả đều nằm trong cùng một tệp), tôi nhận được cảnh báo này khi chạy devtools :: check ("."):Xây dựng gói R Đối tượng mã không có giấy tờ

* checking for missing documentation entries ... WARNING 
Undocumented code objects: 
    'add_to_database' 'database' 'import_CPRD_data' 
All user-level objects in a package should have documentation entries. 

Tôi nghĩ rằng tôi đã ghi lại tài liệu này giống như tất cả các chức năng khác của tôi. Đây là một trong những hàm vi phạm với tài liệu roxygen2:

#' Wrapper for dbconnect 
#' 
#' Connects to a SQLite database or creates one if it does not already exist 
#' 
#' If the '.sqlite' file extension is ommited from the dbname argument it is automatically added. 
#' 
#' @export 
#' 
#' @param dbname character name path to database file 
#' @return SQLiteConnection object 
#' @examples \dontrun{ 
#' db <- database("mydb") 
#' } 
database <- function(dbname){ 
    if(!str_detect(dbname, "\\.sqlite$")) { 
     dbname <- paste(dbname, "sqlite", sep = ".") 
    } 
    dbConnect(SQLite(), dbname) 
} 

Làm cách nào để loại bỏ lỗi này? Tôi đã thêm stringr và RSQLite vào phần phụ thuộc của tệp DESCRIPTION và chúng hiển thị trong NAMESPACE, vì vậy tôi không nghĩ đây là vấn đề về nhập - nhưng sau đó tôi không làm gì để ghi lại? Gói đầy đủ là here và tệp có tệp có chức năng vi phạm là here. Tôi đã nhìn vào sổ tay mở rộng R bằng văn bản và không thể tìm thấy vấn đề - không biết liệu tôi có mù lòa không - nhưng tôi không thể nhìn thấy những gì tôi đang làm khác với những chức năng này từ những người khác mà tôi đã viết !

+1

Tôi nhân bản gói từ github và chạy 'devtools :: check (". ")'. '* kiểm tra các mục nhập tài liệu bị thiếu ... OK ' – jdharrison

+0

Thật kỳ lạ! Bạn đang chạy trên nền tảng nào? Tôi đang trên máy chủ Linux thông qua máy chủ rstudio. Tôi sẽ làm tương tự ngay bây giờ để kiểm tra. – dspringate

+0

Ngoài ra máy chủ Linux thông qua máy chủ rstudio – jdharrison

Trả lời

5

Bạn sử dụng roxygen, nhưng rất có thể bạn không roxygenize gói của mình khi xây dựng.

Hoặc gọi:

roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace')) 

hoặc, nếu bạn sử dụng RStudio, chỉnh sửa tùy chọn dự án (menu Tools) và trong việc kiểm tra tab Tools Build Tạo tài liệu với Roxygen.

+0

Cảm ơn. Tôi đang chạy trong Rstudio và các tài liệu được tạo ra cùng với NAMESPACE khi check() chạy. Đã cố xoá tất cả các tệp thứ ba và kiểm tra lại nhưng không có kết quả. Tất cả các tập tin rd khác tạo ra tốt. – dspringate

+0

@dspringate Tôi không thể tái tạo nó. Nhân bản repo, đã làm roxygenize (Roxygen 4.0.1) và tất cả các Rd đang có. R 3.1 trên Fedora x86_64. – gagolews

3

EDIT:

@R Yoda giải quyết vấn đề được nêu trong "câu trả lời" của tôi: Nó có liên quan đến một cuộc xung đột giữa .Rbuildignore và tên hàm (precisley hơn, tên tập tin của tài liệu của chức năng).


Cùng một vấn đề ở đây. Và đối với tôi, nó liên quan đến tên hàm. Khi tên của hàm bên dưới là load_rdata (hoặc loadrdata), tôi nhận được cảnh báo Undocumented code objects: 'load_rdata'. Khi tôi đổi tên hàm thành load_rda, mọi thứ đều ổn.

Tôi biết đây là một nửa câu hỏi (tại sao điều này xảy ra), một nửa câu trả lời (có thể do tên hàm), nhưng tôi nghĩ nó có thể giúp ai đó gặp câu hỏi này.

#' Load RData file. 
#' 
#' @param file An RData file saved via \code{\link[base]{save}}. 
#' @return The object save in \code{file}. 
#' @references \url{http://stackoverflow.com/a/5577647} 
#' @export 
load_rdata <- function(file = NULL) { 
    env <- new.env() 
    nm <- load(file, env)[1] 
    env[[nm]] 
} 

Đây là đầu ra từ sesssionInfo() và được tái sử dụng khi sử dụng devtools 1.12.0 và roxygen2 6.0.0 thay thế.

R version 3.3.2 (2016-10-31) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

locale: 
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 
[4] LC_NUMERIC=C     LC_TIME=German_Germany.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] devtools_1.12.0.9000 roxygen2_6.0.0.9000 

loaded via a namespace (and not attached): 
[1] R6_2.2.0   magrittr_1.5  tools_3.3.2   withr_1.0.2   memoise_1.0.0  
[6] Rcpp_0.12.9   xml2_1.1.1   stringi_1.1.2  pkgload_0.0.0.9000 digest_0.6.12  
[11] stringr_1.1.0  pkgbuild_0.0.0.9000 commonmark_1.1 
+0

Tôi cũng thấy rằng tạo một thay đổi nhỏ cho tệp '.R' của tôi và sau đó gọi' devtools :: load_all (".") ', Theo sau là' devtools :: document() 'và sau đó' devtools :: check (" . ")' đã khắc phục vấn đề này cho tôi. Tôi đã có vấn đề này sau khi di chuyển thư mục gói của tôi giữa các ổ đĩa trên máy tính Windows của tôi. Tôi nghĩ rằng tài liệu không được cập nhật chính xác, nhưng bằng cách thực hiện một thay đổi nhỏ, tài liệu đã được cập nhật và sau đó kiểm tra R CMD đã trôi qua. – meenaparam

1

Tôi đã có một vấn đề tương tự khi thực hiện một R CMD check:

Status: 1 WARNING 
checking for missing documentation entries ... WARNING 
Undocumented code objects: 
    ‘build.log.output’ 

Sau khi loại bỏ tất cả các file step-by-step Tôi đã tìm thấy lý do: Các tập tin .Rbuildignore! Nó chứa (bên cạnh các dòng khác) một dòng với

^.*\.log 

Dòng cuối cùng làm cho R bỏ qua tất cả các tệp có chứa ".đăng nhập "trong tên của nó và chức năng của tôi được đặt tên là" build.log.output "khiến R bỏ qua tệp tài liệu" build.log.output.Rd "được tạo bởi Roxygen2 khi tạo tệp gói.

Do đó R CMD check không thể tìm thấy các tài liệu trong hồ sơ gói

giải pháp:

Cải thiện sự biểu hiện thường xuyên để bỏ qua các tập tin chỉ thực log:

^.*\.log$ 

("$" có nghĩa là khớp với phần cuối của dòng).

Thì đấy :-)

Các vấn đề liên quan