วิธีที่มีประสิทธิภาพในการจัดระเบียบรหัส R และเอาท์พุทคืออะไร [ปิด]


23

ฉันกำลังมองหาวิธีการที่คนอื่นจัดระเบียบรหัส R และเอาท์พุทของพวกเขา

การปฏิบัติปัจจุบันของฉันคือการเขียนรหัสในบล็อกในไฟล์ข้อความเช่น:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

ฉันจะวางผลลัพธ์ลงในไฟล์ข้อความอื่นโดยปกติแล้วจะมีคำอธิบายประกอบอยู่บ้าง

ปัญหาเกี่ยวกับวิธีนี้คือ:

  1. รหัสและผลลัพธ์ไม่ได้เชื่อมโยงอย่างชัดเจนนอกเหนือจากวันที่
  2. รหัสและผลลัพธ์มีการจัดเรียงตามลำดับเวลาซึ่งทำให้ค้นหาได้ยาก

ฉันได้พิจารณาทำเอกสาร Sweave หนึ่งฉบับกับทุกสิ่งตั้งแต่ฉันสามารถสร้างสารบัญได้ แต่ดูเหมือนว่ามันอาจจะยุ่งยากมากกว่าประโยชน์ที่จะได้รับ

แจ้งให้เราทราบถึงกิจวัตรประจำวันที่มีประสิทธิภาพที่คุณมีสำหรับการจัดระเบียบรหัส R และผลลัพธ์ที่จะช่วยให้การค้นหาและแก้ไขการวิเคราะห์มีประสิทธิภาพ


2
เพียงเพื่อหลีกเลี่ยงการคัดลอก / วางsink()หรือcapture.output()อาจเป็นเพื่อนของคุณ การรายงานยูทิลิตี้เช่นHmisc , Sweaveหรือชงมีค่าที่จะต้องพิจารณา (จุดของคุณ 1) เวอร์ชันระบบ ( RCS , SVNหรือคอมไพล์ ) อาจช่วยจุด 2.
CHL

@chl - ขอบคุณสำหรับคำแนะนำ ฉันไม่รู้ sink()และcapture.output(). มันเยี่ยมมาก
DQdlM

1
วันนี้ยังมี knitr!
kjetil b halvorsen

คำตอบ:


22

+1 และการเชื่อมโยงแรกที่คุณให้อ้างอิงด้ายนั้น :-)
CHL

@chl ขอบคุณ! ผมสงสัยว่าถ้าคำถามนี้เป็นที่ซ้ำกันและควรจะปิด ...
แบร์นด์ไวส์

มันคือ IMO แต่เนื่องจากไม่มีการปิดโหวตฉันลังเลที่จะปิด ยิ่งกว่านั้นคำถามที่เก่ากว่าเป็นเรื่องทั่วไป แต่คำถามที่คล้ายกันมากได้ถูกปิดในอดีต เรามาดูกันว่ามันจะเป็นอย่างไร
chl

ขอบคุณสำหรับรายการ! มันมีประโยชน์มาก ฉันคิดว่าฉันไม่ใช่คนแรกที่มีคำถามนี้ แต่ฉันดูเหมือนจะไม่พบอะไรมากกับการค้นหาครั้งแรกของฉัน
DQdlM

6

ฉันหนึ่งจัดการทุกอย่างเป็น 4 ไฟล์สำหรับทุกโครงการหรือการวิเคราะห์ (1) 'code' ที่ฉันเก็บไฟล์ข้อความของฟังก์ชั่น R (2) 'sql' ที่ฉันเก็บแบบสอบถามที่ใช้ในการรวบรวมข้อมูลของฉัน (3) 'dat' ที่ฉันเก็บสำเนา (โดยปกติคือ csv) ของข้อมูลดิบและประมวลผลของฉัน (4) 'rpt' ที่ฉันเก็บรายงานที่ฉันแจกจ่าย

ไฟล์ทั้งหมดของฉันถูกตั้งชื่อโดยใช้ชื่อที่ละเอียดมากเช่น 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'

ฉันยังเขียนเอกสารรายละเอียดล่วงหน้าซึ่งฉันจัดระเบียบสมมติฐานข้อสันนิษฐานการรวมและเกณฑ์การยกเว้นและขั้นตอนที่ฉันตั้งใจจะไปให้ถึงการส่งมอบของฉัน ทั้งหมดนี้มีค่าสำหรับการทำซ้ำการวิจัยและทำให้กระบวนการกำหนดเป้าหมายประจำปีของฉันง่ายขึ้น


2

ตอนนี้ฉันได้เปลี่ยนมาใช้ Sweave แล้วฉันไม่ต้องการกลับไป โดยเฉพาะอย่างยิ่งถ้าคุณมีพล็อตเป็นเอาต์พุตคุณจะสามารถติดตามโค้ดที่ใช้สร้างแต่ละพล็อตได้ง่ายขึ้น นอกจากนี้ยังทำให้ง่ายขึ้นในการแก้ไขสิ่งเล็ก ๆ น้อย ๆ ตั้งแต่เริ่มต้นและให้มันกระเพื่อมผ่านเอาต์พุตโดยไม่ต้องรันใหม่ด้วยตนเอง


1
Sweave วิเศษมาก มันต้องใช้ความคุ้นเคยบ้าง แต่ถ้าคุณรู้จัก TeX และ R อยู่แล้วมันเป็นตัวเลือกที่ชัดเจน นอกจากนี้ยังช่วยให้คุณไม่ต้องใช้เวลาในการจัดแนวคอลัมน์ตารางอีกต่อไปซึ่งถือว่าดี
richiemorrisroe

ขอบคุณสำหรับการป้อนข้อมูล ข้อกังวล 2 ข้อของฉันกับ Sweave คือ 1) ฉันจะปิดท้ายด้วยไฟล์ bazillion ในไดเรกทอรีของฉัน - โดยเฉพาะอย่างยิ่งกับตัวเลขจำนวนมากและ 2) ฉันจะต้องระมัดระวังรหัสเพื่อป้องกัน hiccups ทุกครั้งที่ฉันรวบรวมเอกสารทั้งหมด (เช่นฉันคิดว่ามีบางอย่างโหลดอยู่และไม่ใช่ของมัน) คุณมีปัญหาเหล
DQdlM

1) คุณสามารถเลือกที่จะลบไฟล์ระดับกลางได้หากต้องการ; ฉันใช้สคริปต์Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ) ซึ่งทำโดยอัตโนมัติ แม้ว่าสามารถปิดได้อย่างง่ายดาย หากคุณทำเช่นนั้นตรวจสอบให้แน่ใจว่าคุณรู้ว่าจะลบอะไรก่อนใช้เพื่อป้องกันความเสียหายที่อาจเกิดขึ้น เวอร์ชันย่อคือถ้าไม่มีไฟล์ใดที่แชร์ชื่อไฟล์ Rnw ของคุณคุณก็โอเค
Aaron - Reinstate Monica

2) ในความคิดของฉันการระวังอย่างนั้นเป็นสิ่งที่ดีและบางครั้งจะรวบรวมเอกสาร Sweave ของฉันด้วยจุดประสงค์ที่แน่นอนนั่นคือเพื่อให้แน่ใจว่าฉันได้ติดตามทุกสิ่งที่จำเป็นในการสร้างใหม่อย่างถูกต้อง การวิเคราะห์
แอรอน - คืนสถานะโมนิก้า

1
@ naught101: สำหรับการวิเคราะห์ที่ยาวนานฉันรันแยกต่างหากและบันทึกผลลัพธ์ซึ่งโดยปกติจะอยู่ใน.RDataไฟล์เพื่อป้อนด้วยเอกสาร Sweave อย่างไรก็ตามยังมีตัวเลือกที่ยอดเยี่ยมอีกหลายตัวสำหรับ "แคช" ผลลัพธ์จากโค้ดกลุ่มดังนั้นจึงไม่ได้รับการเรียกใช้ซ้ำ
แอรอน - คืนสถานะโมนิก้า

2

สำหรับการจัดโครงสร้างไฟล์รหัส. R คุณสามารถใช้strcode , Add-in ของ RStudio ที่ฉันสร้างขึ้นเพื่อแทรกตัวคั่นรหัส ฉันอธิบายการใช้งานโดยละเอียดในโพสต์บล็อกนี้

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