“ ไม่ทำงาน” หมายความว่าอย่างไรในหน้าวิธีใช้ R


112

บางครั้งในหน้าวิธีใช้ R จะมีข้อความ "not run" ปรากฏในความคิดเห็น ตรวจสอบสิ่งนี้จากหน้าความช่วยเหลือสำหรับ "with ()":

Examples
require(stats); require(graphics)
#examples from glm:
**## Not run:** 
library(MASS)
with(anorexia, {
    anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
                    family = gaussian)
    summary(anorex.1)
})
## End(**Not run**)

คำว่า "not run" ในโค้ดตัวอย่างหมายความว่าอย่างไร


32
เป็นเพียงเคล็ดลับที่เกี่ยวข้อง คุณสามารถรันโค้ดตัวอย่างได้โดยการออก "example (glm)"
Eduardo Leoni

4
นั่นคือเคล็ดลับที่ดี และฉันพนันได้เลยว่าผู้ใช้ R ส่วนใหญ่ไม่รู้เรื่องนี้
Dan Goldstein

1
แต่ตัวอย่างหมายเหตุ (fn) จะยังคงไม่รวมโค้ดตัวอย่างdontRun
ทิม

ยกเว้นว่าคุณตั้งค่าrun.dontrunพารามิเตอร์เป็นTRUE
Moody_Mudskipper

คำตอบ:


77

"not run" ล้อมรอบโค้ดที่ไม่ควรเรียกใช้ในexampleฟังก์ชัน (เช่นส่วนของโค้ดที่ใช้เวลานานการโต้ตอบกับผู้ใช้ ... )

ดูเช่น?example:

ตามรายละเอียดในการเขียนส่วนขยาย Rด้วยตนเองผู้เขียนหน้าวิธีใช้สามารถมาร์กอัปบางส่วนของตัวอย่างสำหรับกฎข้อยกเว้นสองข้อ

  • 'dontrun' ล้อมรอบรหัสที่ไม่ควรเรียกใช้

  • 'dontshow' ล้อมรอบโค้ดที่มองไม่เห็นในหน้าวิธีใช้ แต่จะเรียกใช้ทั้งโดยเครื่องมือตรวจสอบแพ็กเกจและฟังก์ชัน 'example ()' ก่อนหน้านี้เป็น "testonly" และยังยอมรับแบบฟอร์มดังกล่าว


3
... ไม่รู้ฟังก์ชั่นนี้ได้ยังไง
Matt Parker

5
ไม่ใช่แค่รหัสที่ใช้เวลานานเท่านั้นที่มักจะใส่ไว้ใน \ dontrun {} รหัสที่ต้องป้อนข้อมูลของผู้ใช้จะต้องอยู่ใน dontrun เช่นกันมิฉะนั้นจะไม่ผ่านR CMD check
Dason

2
หรือ: รหัสที่ขึ้นอยู่กับแพ็คเกจที่อาจไม่ได้ติดตั้งบนเครื่องของผู้ใช้ มีเหตุผลมากมายและมากมายให้ใช้ \ dontrun {}
Jason

25

ในคู่มือ"การเขียนส่วนขยาย R"ในส่วนเกี่ยวกับ \ Example {... } มีการกล่าวไว้ว่า

คุณสามารถใช้ \ dontrun {} สำหรับข้อความที่ควรแสดงเท่านั้น แต่ไม่ต้องรันและ \ dontshow {} สำหรับคำสั่งพิเศษสำหรับการทดสอบที่ไม่ควรแสดงให้ผู้ใช้เห็น แต่จะถูกเรียกใช้โดยตัวอย่าง ()

เมื่อคุณสร้างแพ็กเกจโค้ดทั้งหมดใน \ dontrun {} ปิดจะปรากฏในความช่วยเหลือเป็น

## Not run:
...
## End(**Not run**)

แก้ไข: คำตอบนี้ก่อนหน้านี้


15

นี้จะเพิ่ม\donttest{}และถูกนำตัว (คำต่อคำ) จาก @ นายอำเภอR แพคเกจ

อย่างไรก็ตามเพื่อจุดประสงค์ในการแสดงภาพประกอบมักมีประโยชน์ในการใส่โค้ดที่ทำให้เกิดข้อผิดพลาด \dontrun{}อนุญาตให้คุณรวมโค้ดในตัวอย่างที่ไม่เคยใช้ มีคำสั่งพิเศษอีกสองคำสั่ง \dontshow{}ทำงานอยู่ แต่ไม่ปรากฏในหน้าวิธีใช้: สิ่งนี้มีประโยชน์สำหรับการทดสอบแบบไม่เป็นทางการ \donttest{}ทำงานในตัวอย่าง แต่ไม่ทำงานโดยอัตโนมัติในการตรวจสอบ R CMD สิ่งนี้มีประโยชน์หากคุณมีตัวอย่างที่ใช้เวลาดำเนินการนาน ตัวเลือกมีสรุปไว้ด้านล่าง

Command      example    help       R CMD check
\dontrun{}                 x
\dontshow{}       x                          x
\donttest{}       x        x

2
โปรดทราบว่า donttest ได้รับการทดสอบแล้ว
Tyler Rinker

1
สำหรับการส่งแพ็กเกจคุณต้องมีความคิดเห็นเพิ่มเติมใน. RD เหตุผลการละเว้นบล็อกโค้ดหรือไม่ ฉันตรวจสอบแพ็กเกจล้มเหลวเนื่องจากตัวอย่าง \ donttest {} และฉันสงสัยว่าการเปลี่ยนเป็น \ dontrun {} นั้นทำได้ง่ายหรือไม่ ฟังก์ชันนี้มีไว้สำหรับดาวน์โหลดข้อมูลจาก ftp และความคิดเห็นของ CRAN คือ: "ที่ไม่ได้แสดงความคิดเห็นในไฟล์. RD โปรดทราบว่าตัวอย่าง () จะเรียกใช้ส่วนเหล่านี้"
Jeffrey Evans

ใช่มันควรจะง่ายอย่างนั้น
Tyler Rinker

@TylerRinker คุณหมายถึงฟังก์ชันได้รับการยืนยันว่าใช้งานได้หรือรหัสที่อยู่ใน @donttest {} จะเรียกใช้โดย CRAN เมื่อทำการตรวจสอบ
ทิม

2
ใช่นี่เป็นคำพูดจากหนังสือของ Hadley: "เพื่อเป็นภาพประกอบการใส่รหัสที่ทำให้เกิดข้อผิดพลาดมักมีประโยชน์ \ dontrun {} ช่วยให้คุณสามารถรวมโค้ดในตัวอย่างที่ไม่ทำงาน (คุณเคยเป็น สามารถใช้ \ donttest {} เพื่อวัตถุประสงค์ที่คล้ายกันได้ แต่ไม่แนะนำอีกต่อไปเนื่องจากผ่านการทดสอบแล้ว) "
Tyler Rinker

5

C & p จากบทที่ 5.4 (ไฟล์เอกสาร R) ของแพ็กเกจการสร้าง Rที่ต้องอ่าน: บทช่วยสอนโดย Friedrich Leisch:

ส่วนตัวอย่างควรมีโค้ด R ที่เรียกใช้งานได้และการรันโค้ดโดยอัตโนมัติเป็นส่วนหนึ่งของการตรวจสอบแพ็กเกจ มีคำสั่งมาร์กอัปพิเศษสองคำสั่งสำหรับตัวอย่าง:

dontrun : ทุกสิ่งที่อยู่ใน \ dontrun {} ไม่ได้ดำเนินการโดยการทดสอบหรือตัวอย่าง () สิ่งนี้มีประโยชน์เช่นสำหรับฟังก์ชันโต้ตอบฟังก์ชันการเข้าถึงอินเทอร์เน็ตเป็นต้นอย่าใช้ในทางที่ผิดเพื่อทำให้ชีวิตง่ายขึ้นสำหรับคุณโดยยกตัวอย่างที่ไม่สามารถดำเนินการได้


3

ตัวอย่าง Canonical ที่นี่อาจอยู่ในหน้าความช่วยเหลือสำหรับrm:

## Not run: 
## remove (almost) everything in the working environment.
## You will get no warning, so don't do this unless you are really sure.
rm(list = ls())

## End(Not run)

หากสิ่งนี้ดำเนินไปแน่นอนว่าจะมีผลกระทบที่ไม่ต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.