Apa cara yang efisien untuk mengatur kode R dan output? [Tutup]

23

Saya mencari input tentang bagaimana orang lain mengatur kode R dan output mereka.

Praktik saya saat ini adalah menulis kode dalam blok dalam file teks seperti itu:

#=================================================
# 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"]))
#==================================================

Saya kemudian menempelkan output ke file teks lain, biasanya dengan beberapa penjelasan.

Masalah dengan metode ini adalah:

  1. Kode dan output tidak secara eksplisit ditautkan selain oleh tanggal.
  2. Kode dan output diatur secara kronologis sehingga sulit untuk dicari.

Saya telah mempertimbangkan membuat satu dokumen Sweave dengan segalanya karena saya kemudian dapat membuat daftar isi tetapi sepertinya ini lebih merepotkan daripada manfaat yang diberikannya.

Beri tahu saya tentang rutinitas efektif yang Anda miliki untuk mengatur kode R dan hasil yang memungkinkan pencarian dan pengeditan analisis secara efisien.

DQdlM
sumber
2
Hanya untuk menghindari copy / paste, sink()atau capture.output()mungkin teman Anda. Utilitas pelaporan, seperti Hmisc , Sweave , atau minuman layak untuk dipertimbangkan (poin Anda 1). Sistem versi ( rcs , svn , atau git ) dapat membantu dengan poin 2.
chl
@ chl - terima kasih atas sarannya. Saya tidak menyadari sink()dan capture.output(). Itu keren.
DQdlM
1
hari ini ada juga rajutan!
kjetil b halvorsen

Jawaban:

22

Anda bukan orang pertama yang mengajukan pertanyaan ini.

Bernd Weiss
sumber
+1 dan tautan pertama yang Anda berikan referensi utas di dalamnya :-)
chl
@ chl, terima kasih! Saya bertanya-tanya apakah pertanyaan ini adalah duplikat dan harus ditutup ...
Bernd Weiss
Ya, IMO. Tetapi karena tidak ada suara untuk ditutup, saya enggan untuk menutupnya. Juga, yang lebih tua lebih umum, tetapi pertanyaan yang sangat mirip telah ditutup di masa lalu. Mari kita tunggu dan lihat bagaimana kelanjutannya.
chl
terima kasih untuk daftarnya! Ini sangat berguna. Saya pikir saya bukan orang pertama yang memiliki pertanyaan ini, tetapi sepertinya saya tidak menemukan banyak dengan pencarian awal saya (jelas tidak kompeten).
DQdlM
6

I untuk satu mengatur semuanya menjadi 4 file untuk setiap proyek atau analisis. (1) 'kode' Di mana saya menyimpan file teks dari fungsi R. (2) 'sql' Di mana saya menyimpan pertanyaan yang digunakan untuk mengumpulkan data saya. (3) 'dat' Di mana saya menyimpan salinan (biasanya csv) dari data mentah dan diproses saya. (4) 'rpt' Di mana saya menyimpan laporan yang telah saya bagikan.

SEMUA file saya dinamai menggunakan nama yang sangat verbose seperti 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'

Saya juga menulis dokumentasi terperinci di muka di mana saya mengatur hipotesis, asumsi, kriteria inklusi dan pengecualian, dan langkah-langkah yang ingin saya ambil untuk mencapai hasil kerja saya. Semua ini sangat berharga untuk penelitian berulang dan membuat proses penetapan tujuan tahunan saya lebih mudah.

Akan
sumber
2

Sekarang saya telah beralih ke Sweave, saya tidak pernah ingin kembali. Terutama jika Anda memiliki plot sebagai output, jauh lebih mudah untuk melacak kode yang digunakan untuk membuat setiap plot. Itu juga membuatnya lebih mudah untuk memperbaiki satu hal kecil di awal dan membuatnya melalui output tanpa harus menjalankan kembali apa pun secara manual.

Aaron - Pasang kembali Monica
sumber
1
Sweave itu luar biasa. Dibutuhkan beberapa membiasakan diri, tetapi jika Anda sudah tahu TeX dan R, itu pilihan yang jelas. Ini juga memungkinkan Anda untuk tidak pernah menghabiskan waktu menyelaraskan kolom tabel lagi, yang bagus.
richiemorrisroe
terima kasih atas masukannya. 2 kekhawatiran saya dengan Sweave adalah 1) Saya akan menemukan banyak file dalam direktori saya - terutama dengan banyak angka, dan 2) Saya harus benar-benar berhati-hati dengan kode untuk mencegah cegukan setiap kali saya mengkompilasi seluruh dokumen (misalnya, saya pikir ada sesuatu yang dimuat dan tidak). Apakah Anda memiliki masalah ini?
DQdlM
1) Anda dapat memilih untuk menghapus file antara jika Anda mau; Saya menggunakan skrip Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ) yang melakukannya secara otomatis; meski bisa dengan mudah dimatikan. Jika Anda melakukannya, pastikan Anda tahu apa yang akan dihapus sebelum menggunakannya untuk mencegah kemungkinan bencana. Versi singkatnya adalah bahwa jika tidak ada file yang membagikan nama file file Rnw Anda, Anda baik-baik saja.
Aaron - Pasang kembali Monica
2) Menurut pendapat saya, harus berhati-hati dengan cara itu adalah Good Thing, dan kadang-kadang akan mengkompilasi dokumen Sweave saya dengan tujuan yang tepat dalam pikiran, yaitu, untuk memastikan saya telah melacak dengan baik semua yang diperlukan untuk menciptakan kembali analisis.
Aaron - Pasang kembali Monica
1
@ naught101: Untuk analisis panjang, saya menjalankannya secara terpisah dan menyimpan hasilnya, biasanya dalam .RDatafile, untuk input oleh dokumen Sweave. Namun, ada juga beberapa opsi hebat di luar sana untuk "caching" hasil dari potongan kode sehingga tidak mendapatkan jalankan kembali.
Aaron - Pasang kembali Monica
2

Untuk menyusun satu file kode .R, Anda juga dapat menggunakan strcode , add-in RStudio yang saya buat untuk menyisipkan pemisah kode (dengan judul opsional) dan berdasarkan pada itu - dapatkan ringkasan file kode. Saya menjelaskan penggunaannya secara lebih rinci dalam posting blog ini .

Lorenz Walthert
sumber