จะไม่เรียกใช้ตัวอย่างโดยใช้ roxygen2 ได้อย่างไร?


96

ตอนนี้ฉันกำลังเขียนฟังก์ชัน geocodingซึ่งอาศัยการมี Bing Maps Key เห็นได้ชัดว่าฉันไม่อยากเผยแพร่ของฉันและตัวอย่างก็ล้มเหลวหากไม่มี

ฉันจะรวมตัวอย่างเพื่อให้ผู้ใช้เรียกใช้ด้วยตนเอง แต่ไม่ได้ดำเนินการในระหว่างนั้นได้R CMD checkอย่างไร

คำตอบ:


149

ใช้ \dontrun{}

#'@examples
#'\dontrun{
#'geocode("3817 Spruce St, Philadelphia, PA 19104")
#'geocode("Philadelphia, PA")
#'dat <- data.frame(value=runif(3),address=c("3817 Spruce St, Philadelphia, PA 19104","Philadelphia, PA","Neverneverland"))
#'geocode(dat)
#'}

2
นี่คือเอกสาร?exampleและการเขียน R Extensions
GSee

2
@ เจโรนฉันเชื่อว่าroxygen2มันเป็น@exampleแท็กดังนั้นฉันคิดว่ามันเป็นroxygen2ปัญหา ฉันคิดว่าไม่\example{}ถูกต้อง - ดูcran.r-project.org/doc/manuals/…
GSee

2
ตัดสินจากชื่อหัวข้อคำถามเกี่ยวกับไวยากรณ์ roxygen2 และไม่เกี่ยวกับไวยากรณ์. RD?
Jeroen

ขอบคุณสำหรับคำตอบ. มันไม่ได้ผลสำหรับฉันก่อนเพราะฉันใช้@exampleแทน@examples. แท็กทั้งสองจะปรากฏขึ้นในการเติมข้อความอัตโนมัติของ RStudio ฉันมีความสุขในขณะนี้.
Paul Rougieux

5
ฉันคิดว่าคำตอบที่ถูกต้องสำหรับสิ่งที่ถูกขอคือ donttest และ not dontrun ดู? example และstackoverflow.com/questions/12038160/… . ดูcran.r-project.org/web/packages/roxygen2/vignettes/rd.htmlด้วย
Julian Karch

37

คุณสามารถใช้\donttest{}กับตัวอย่างของคุณ ข้อมูลโค้ดจะอยู่ในเอกสารของคุณ แต่จะไม่ได้รับการทดสอบด้วย R CMD Check

สำหรับข้อมูลเพิ่มเติม -> ?example

#' @example
\donttest{
    2^2
    }

2 ^ 2 นี้จะไม่ทำงานเมื่อคุณเรียกใช้ devtools::check()

ตรวจสอบตัวเองก่อนตัดสิน :)


16
ดูเหมือนว่านี่ควรเป็นคำตอบที่ได้รับการยอมรับแทนที่จะเป็น dontrun จาก? ตัวอย่าง 'donttest ล้อมรอบโค้ดที่ควรรันโดยทั่วไป แต่ไม่ใช่ระหว่างการตรวจสอบแพ็คเกจ' ในขณะที่ 'dontrun ล้อมรอบรหัสที่ไม่ควรเรียกใช้' ฉันยังได้รับความคิดเห็นจากผู้ดูแลเครนให้เปลี่ยนจาก dontrun เป็น donttest
Julian Karch

3
เห็นด้วยอย่างยิ่งกับ @JulianKarls ได้รับการตอบรับเดียวกันจากผู้ดูแลรักษา CRAN
David

11

สำหรับผู้ที่ใช้@example path/to/example.Rแทน@examplesแท็กคุณสามารถใช้\dontrunสภาพแวดล้อมในexample.Rไฟล์ได้โดยตรง ตัวอย่างเช่น

# example.R
\dontrun{
# this is a long running example
for(i in seq(1, 1e5)) { lm(mpg ~ wt, data = mtcars) }
}

# some other shorter example
2 + 2

1
สิ่งนี้ใช้ไม่ได้สำหรับฉัน (ทำงานบน Win 10, 64 บิต, R เวอร์ชัน 3.5.0)
JBJ

2

Ari ฉันยังใช้ roxygen2 (เวอร์ชัน 4.1.0) ต่อไปนี้เป็นจุดสิ้นสุดของการมาร์กอัป roxygen2 ในนิยามฟังก์ชัน (gctemplate) ของฉันจนถึงจุดเริ่มต้นของส่วนจริง

#' @examples
#' ## List all G-causalities in a VAR system of 5 variables that will be searched in the pattern of 1 
#' ## causer (like-independent) variable and 2 like-dependents conditional on 5-(1+2)=2 of the remaining 
#' ## variable(s) in the system. Variables are assigned to numbers 1 to nvars. 
#' ## "1 2 5 3 4" in the resulting line of gctemplate is to indicate the 
#' ## (conditonal, partial, etc.) G-causality from variable 1 to variables 2 and 5 
#' ## conditonal on variables 3 and 4.
#' # gctemplate(5,1,2)
#' ## The number of all G-causalities to be searched in the above pattern.
#' #dim(gctemplate(5,1,2))[[1]]
#' @importFrom combinat combn
#' @export
gctemplate <- function(nvars, ncausers, ndependents){
...

ฉันรู้วิธี dontrun ของ GSee
ในเทคนิคของฉันตัวอย่างตัวเลขและข้อความที่อธิบายตัวอย่างตัวเลขเป็นทั้งความคิดเห็น ฉันใช้การเยื้องเพื่อสร้างความแตกต่างระหว่างสองสิ่งนี้ สังเกตว่ามี 1 ชาร์ปและ 2 ชาร์ปตามลำดับหลัง "#" ฉันมักจะใช้เทคนิค "# '## / #' #" ข้างต้นในแพ็คเกจของฉัน ผู้ใช้ถูกปล่อยให้คัดลอกวางเมื่อใดก็ตามที่ต้องการทดสอบฟังก์ชัน เทคนิคนี้ - ตามที่ฉันพูด - คู่ขนานกับการระดมความคิดเห็นแบบคลาสสิกของปรัชญาการเข้ารหัสซอฟต์แวร์


14
หากคุณใช้dontrun{}ผู้ใช้สามารถโทรexample(myFunction, run.dontrun=TRUE)ได้ในขณะที่คุณเพียงแค่แสดงความคิดเห็นตามตัวอย่างคุณไม่มีทางเรียกใช้ตัวอย่างอื่นนอกจากคัดลอก / วาง
GSee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.