Ketika mendiskusikan kinerja dengan kolega, mengajar, mengirim laporan bug atau mencari panduan tentang milis dan di sini di Stack Overflow, contoh yang direproduksi sering ditanyakan dan selalu membantu.
Apa tips Anda untuk membuat contoh yang bagus? Bagaimana Anda menempelkan struktur datardalam format teks? Informasi apa lagi yang harus Anda sertakan?
Apakah ada trik lain selain menggunakan dput()
, dump()
atau structure()
? Kapan Anda harus memasukkan library()
atau require()
pernyataan? Mana kata-kata dicadangkan harus satu menghindari, di samping c
, df
, data
, dll?
Bagaimana cara membuat yang hebat r contoh yang direproduksi?
Jawaban:
Contoh minimal yang dapat direproduksi terdiri dari item berikut:
set.seed()
) untuk reproduktifitas 1Untuk contoh contoh minimal yang dapat direproduksi dengan baik , lihat file bantuan dari fungsi yang Anda gunakan. Secara umum, semua kode yang diberikan di sana memenuhi persyaratan contoh minimal yang dapat direproduksi: data disediakan, kode minimal disediakan, dan semuanya dapat dijalankan. Lihat juga pertanyaan tentang Stack Overflow dengan banyak upvotes.
Menghasilkan dataset minimal
Untuk sebagian besar kasus, ini dapat dengan mudah dilakukan dengan hanya menyediakan beberapa vektor / bingkai data dengan beberapa nilai. Atau Anda dapat menggunakan salah satu dataset bawaan, yang disediakan dengan sebagian besar paket.
Daftar lengkap dataset bawaan dapat dilihat bersama
library(help = "datasets")
. Ada deskripsi singkat untuk setiap dataset dan informasi lebih lanjut dapat diperoleh misalnya dengan di?mtcars
mana 'mtcars' adalah salah satu dataset dalam daftar. Paket lain mungkin berisi set data tambahan.Membuat vektor itu mudah. Terkadang perlu untuk menambahkan keacakan, dan ada sejumlah fungsi untuk membuatnya.
sample()
dapat mengacak vektor, atau memberikan vektor acak dengan hanya beberapa nilai.letters
adalah vektor yang berguna yang mengandung alfabet. Ini dapat digunakan untuk membuat faktor.Beberapa contoh:
x <- rnorm(10)
untuk distribusi normal,x <- runif(10)
untuk distribusi seragam, ...x <- sample(1:10)
untuk vektor 1:10 dalam urutan acak.x <- sample(letters[1:4], 20, replace = TRUE)
Untuk matriks, seseorang dapat menggunakan
matrix()
, misalnya:Pembuatan frame data bisa dilakukan dengan menggunakan
data.frame()
. Orang harus memperhatikan nama entri dalam bingkai data, dan tidak membuatnya terlalu rumit.Sebuah contoh :
Untuk beberapa pertanyaan, format spesifik dapat diperlukan. Untuk ini, seseorang dapat menggunakan salah satu yang disediakan
as.someType
fungsi:as.factor
,as.Date
,as.xts
, ... ini dalam kombinasi dengan vektor dan / atau data frame trik.Salin data Anda
Jika Anda memiliki beberapa data yang akan terlalu sulit dibangun menggunakan tips ini, maka Anda selalu dapat membuat subset dari data asli Anda, menggunakan
head()
,subset()
atau indeks. Kemudian gunakandput()
untuk memberi kita sesuatu yang dapat dimasukkan ke dalam R segera:Jika bingkai data Anda memiliki faktor dengan banyak level,
dput
output dapat menjadi berat karena masih akan mencantumkan semua tingkat faktor yang mungkin bahkan jika mereka tidak hadir dalam subset data Anda. Untuk mengatasi masalah ini, Anda dapat menggunakandroplevels()
fungsi ini. Perhatikan di bawah ini bagaimana spesies merupakan faktor dengan hanya satu tingkat:Saat menggunakan
dput
, Anda mungkin hanya ingin memasukkan kolom yang relevan:Satu peringatan lain
dput
adalah bahwa itu tidak akan berfungsi untukdata.table
objek yang dikunci atau untuk dikelompokkantbl_df
(kelasgrouped_df
) daridplyr
. Dalam kasus ini, Anda dapat mengonversi kembali ke bingkai data biasa sebelum berbagidput(as.data.frame(my_data))
,.Skenario terburuk, Anda dapat memberikan representasi teks yang dapat dibaca dengan menggunakan
text
parameterread.table
:Memproduksi kode minimal
Ini harus menjadi bagian yang mudah tetapi seringkali tidak. Yang tidak boleh Anda lakukan adalah:
Yang harus Anda lakukan adalah:
library()
)unlink()
)op <- par(mfrow=c(1,2)) ...some code... par(op)
)Berikan informasi tambahan
Dalam kebanyakan kasus, hanya versi R dan sistem operasi yang cukup. Ketika konflik muncul dengan paket, memberikan hasil
sessionInfo()
benar-benar dapat membantu. Ketika berbicara tentang koneksi ke aplikasi lain (baik itu melalui ODBC atau apa pun), orang juga harus memberikan nomor versi untuk itu, dan jika mungkin juga informasi yang diperlukan pada pengaturan.Jika Anda menjalankan R in R Studio menggunakan
rstudioapi::versionInfo()
dapat membantu untuk melaporkan versi RStudio Anda.Jika Anda memiliki masalah dengan paket tertentu, Anda mungkin ingin memberikan versi paket dengan memberikan output
packageVersion("name of the package")
.1 Catatan: Output dari
set.seed()
perbedaan antara R> 3.6.0 dan versi sebelumnya. Tentukan versi R mana yang Anda gunakan untuk proses acak, dan jangan kaget jika Anda mendapatkan hasil yang sedikit berbeda saat mengikuti pertanyaan lama. Untuk mendapatkan hasil yang sama dalam kasus-kasus seperti itu, Anda dapat menggunakanRNGversion()
-fungsi sebelumnyaset.seed()
(misalnya :)RNGversion("3.5.2")
.sumber
dput
jika bingkai data sangat besar dan masalah dihasilkan oleh tengah bingkai data? Apakah ada cara yang digunakandput
untuk mereproduksi bagian tengah data, katakanlah baris 60 hingga 70?tmp <- mydf[50:70,]
diikuti olehdput(mydf)
. Jika bingkai data benar-benar besar, cobalah mengisolasi masalah dan kirimkan beberapa baris yang menyebabkan masalah.head
ataudput
membatasi data ke level N secara rekursif? Saya mencoba untuk membuat contoh yang dapat direproduksi dan data saya adalah daftar bingkai data. Jadi,dput(head(myDataObj))
sepertinya tidak cukup, karena menghasilkan file output berukuran 14MB.(Ini saran saya dari Cara menulis contoh yang bisa direproduksi . Saya sudah mencoba membuatnya singkat tapi manis)
Cara menulis contoh yang dapat direproduksi.
Anda kemungkinan besar akan mendapatkan bantuan yang baik dengan masalah R Anda jika Anda memberikan contoh yang dapat direproduksi. Contoh yang direproduksi memungkinkan orang lain untuk menciptakan kembali masalah Anda hanya dengan menyalin dan menempelkan kode R.
Ada empat hal yang perlu Anda sertakan untuk membuat contoh Anda dapat direproduksi: paket yang diperlukan, data, kode, dan deskripsi lingkungan R Anda.
Paket harus dimuat di bagian atas skrip, sehingga mudah untuk melihat mana yang dibutuhkan contoh.
Cara termudah untuk memasukkan data dalam email atau pertanyaan Stack Overflow adalah dengan menggunakan
dput()
untuk menghasilkan kode R untuk membuatnya kembali. Misalnya, untuk membuat ulangmtcars
dataset dalam R, saya akan melakukan langkah-langkah berikut:dput(mtcars)
di Rmtcars <-
lalu tempel.Luangkan sedikit waktu untuk memastikan bahwa kode Anda mudah dibaca orang lain:
pastikan Anda telah menggunakan spasi dan nama variabel Anda ringkas, tetapi informatif
gunakan komentar untuk menunjukkan di mana letak masalah Anda
lakukan yang terbaik untuk menghapus semua yang tidak berhubungan dengan masalah.
Semakin pendek kode Anda, semakin mudah dipahami.
Sertakan output
sessionInfo()
dalam komentar dalam kode Anda. Ini merangkum lingkungan R Anda dan membuatnya mudah untuk memeriksa apakah Anda menggunakan paket yang kedaluwarsa.Anda dapat memeriksa apakah Anda benar-benar membuat contoh yang dapat direproduksi dengan memulai sesi R baru dan menempelkan skrip Anda di.
Sebelum memasukkan semua kode Anda dalam email, pertimbangkan untuk meletakkannya di Gist github . Ini akan memberi kode Anda sorotan sintaks yang bagus, dan Anda tidak perlu khawatir tentang apa pun yang rusak oleh sistem email.
sumber
reprex
intidyverse
adalah paket yang bagus untuk menghasilkan minimal, contoh yang dapat direproduksi: github.com/tidyverse/reprexSecara pribadi, saya lebih suka liners "satu". Sesuatu di sepanjang garis:
Struktur data harus meniru gagasan masalah penulis dan bukan struktur kata demi kata yang tepat. Saya sangat menghargainya ketika variabel tidak menimpa variabel saya sendiri atau tidak, fungsi (seperti
df
).Atau, seseorang dapat memotong beberapa sudut dan menunjuk ke set data yang sudah ada sebelumnya, seperti:
Jangan lupa menyebutkan paket khusus yang mungkin Anda gunakan.
Jika Anda mencoba mendemonstrasikan sesuatu pada objek yang lebih besar, Anda dapat mencoba
Jika Anda bekerja dengan data spasial melalui
raster
paket, Anda dapat menghasilkan beberapa data acak. Banyak contoh dapat ditemukan dalam sketsa paket, tetapi ini adalah nugget kecil.Jika Anda membutuhkan beberapa objek spasial seperti yang diterapkan
sp
, Anda bisa mendapatkan beberapa set data melalui file eksternal (seperti ESRI shapefile) dalam paket "spasial" (lihat tampilan Spasial di Tampilan Tugas).sumber
sample
ataurunif
lebih bijaksanaset.seed
. Setidaknya, ini saran yang saya terima ketika membuat contoh menyampaikan sampel atau pembuatan angka acak.runif
atausample
tidak bingung bahwa mereka tidak bisa mendapatkan data yang sama.Terinspirasi oleh posting ini, saya sekarang menggunakan fungsi praktis
reproduce(<mydata>)
ketika saya perlu memposting ke StackOverflow.INSTRUKSI CEPAT
Jika
myData
nama objek Anda untuk direproduksi, jalankan berikut ini di R:Detail:
Fungsi ini adalah pembungkus cerdas untuk
dput
dan melakukan hal berikut:dput
outputobjName <- ...
sehingga dapat dengan mudah menyalin + menempel, tetapi ...Sumber tersedia di sini:
Contoh:
DF sekitar 100 x 102. Saya ingin mencicipi 10 baris, dan beberapa kolom tertentu
Memberikan hasil sebagai berikut:
Perhatikan juga bahwa keseluruhan output dalam satu baris yang bagus, panjang, bukan paragraf tinggi dari garis yang dicacah. Ini membuatnya lebih mudah untuk membaca pada posting pertanyaan SO dan juga lebih mudah untuk menyalin + menempel.
Pembaruan Oktober 2013:
Anda sekarang dapat menentukan berapa banyak baris output teks akan mengambil (yaitu, apa yang akan Anda tempelkan ke StackOverflow). Gunakan
lines.out=n
argumen untuk ini. Contoh:reproduce(DF, cols=c(1:3, 17, 23), lines.out=7)
hasil:sumber
Ini panduan yang bagus .
Poin yang paling penting adalah: Pastikan Anda membuat sepotong kecil kode yang bisa kita jalankan untuk melihat apa masalahnya . Fungsi yang berguna untuk ini adalah
dput()
, tetapi jika Anda memiliki data yang sangat besar, Anda mungkin ingin membuat dataset sampel kecil atau hanya menggunakan 10 baris pertama atau lebih.EDIT:
Pastikan juga Anda mengidentifikasi di mana masalahnya adalah diri Anda sendiri. Contohnya tidak boleh seluruh script R dengan "On line 200 ada kesalahan". Jika Anda menggunakan alat debugging di R (I love
browser()
) dan Google Anda harus benar-benar dapat mengidentifikasi di mana masalahnya dan mereproduksi contoh sepele di mana hal yang sama salah.sumber
Milis R-help memiliki panduan pengiriman yang mencakup pertanyaan dan jawaban pertanyaan, termasuk contoh menghasilkan data:
Kata kecil sangat penting. Anda harus membidik contoh minimal yang dapat direproduksi, yang berarti bahwa data dan kode harus sesederhana mungkin untuk menjelaskan masalahnya.
EDIT: Pretty code lebih mudah dibaca daripada kode jelek. Gunakan panduan gaya .
sumber
Karena R.2.14 (saya kira) Anda dapat memberi makan representasi teks data Anda langsung ke
read.table
:sumber
Kadang-kadang masalah sebenarnya tidak dapat direproduksi dengan sepotong data yang lebih kecil, tidak peduli seberapa keras Anda mencoba, dan tidak terjadi dengan data sintetis (meskipun itu berguna untuk menunjukkan bagaimana Anda menghasilkan set data sintetis yang tidak mereproduksi masalah, karena itu mengesampingkan beberapa hipotesis).
Jika Anda tidak dapat melakukan keduanya, maka Anda mungkin perlu menyewa konsultan untuk menyelesaikan masalah Anda ...
sunting : Dua pertanyaan SO yang berguna untuk penganoniman / pengacakan:
sumber
fitdistr
danfitdistrplus
.Jawaban sejauh ini jelas bagus untuk bagian reproduktifitas. Ini hanya untuk mengklarifikasi bahwa contoh yang direproduksi tidak dapat dan tidak seharusnya menjadi komponen tunggal dari sebuah pertanyaan. Jangan lupa untuk menjelaskan apa yang Anda inginkan dan kontur masalah Anda, bukan hanya bagaimana Anda berusaha untuk sampai ke sana sejauh ini. Kode tidak cukup; kamu perlu kata-kata juga.
Berikut adalah contoh yang dapat direproduksi dari apa yang harus dihindari (diambil dari contoh nyata, nama diubah untuk melindungi yang tidak bersalah):
Berikut ini adalah contoh data dan bagian dari fungsi yang saya bermasalah.
Bagaimana saya bisa mencapai ini?
sumber
Saya memiliki cara yang sangat mudah dan efisien untuk membuat contoh R yang belum disebutkan di atas. Anda dapat menentukan struktur Anda terlebih dahulu. Sebagai contoh,
Kemudian Anda dapat memasukkan data Anda secara manual. Ini efisien untuk contoh yang lebih kecil daripada yang besar.
sumber
dput(mydata)
for (d in data) {...}
.Untuk membuat
dput
data Anda dengan cepat, Anda cukup menyalin (sepotong) data ke clipboard Anda dan menjalankan yang berikut di R:untuk data di Excel:
untuk data dalam file txt:
Anda dapat mengubah
sep
yang terakhir jika perlu. Ini hanya akan berfungsi jika data Anda ada di clipboard tentunya.sumber
Pedoman:
Tujuan utama Anda dalam menyusun pertanyaan Anda adalah membuatnya semudah mungkin bagi pembaca untuk memahami dan mereproduksi masalah Anda pada sistem mereka. Untuk melakukannya:
Ini memang membutuhkan beberapa pekerjaan tetapi sepertinya pertukaran yang adil karena Anda meminta orang lain melakukan pekerjaan untuk Anda.
Memberikan data:
Perangkat Data Internal
Opsi terbaik sejauh ini adalah mengandalkan set data bawaan. Ini membuatnya sangat mudah bagi orang lain untuk mengatasi masalah Anda. Ketik
data()
pada prompt R untuk melihat data apa yang tersedia untuk Anda. Beberapa contoh klasik:iris
mtcars
ggplot2::diamonds
(paket eksternal, tetapi hampir semua orang memilikinya)Lihat SO QA ini untuk cara menemukan set data yang cocok untuk masalah Anda.
Jika Anda dapat menguraikan kembali masalah Anda untuk menggunakan dataset bawaan, Anda akan lebih mungkin mendapatkan jawaban yang baik (dan upvotes).
Data yang Dihasilkan Sendiri
Jika masalah Anda sangat spesifik untuk tipe data yang tidak terwakili dalam set data yang ada, maka berikan kode R yang menghasilkan dataset sekecil mungkin yang dimanifestasikan oleh masalah Anda. Sebagai contoh
Sekarang seseorang yang mencoba menjawab pertanyaan saya dapat menyalin / menempelkan dua baris itu dan segera mulai mengerjakan masalahnya.
dput
Sebagai upaya terakhir , Anda dapat menggunakan
dput
untuk mengubah objek data ke kode R (misalnyadput(myData)
). Saya katakan sebagai "upaya terakhir" karena hasil daridput
seringkali cukup sulit, mengganggu untuk disalin, dan mengaburkan sisa pertanyaan Anda.Memberikan Output yang Diharapkan:
Seseorang pernah berkata:
Jika Anda dapat menambahkan sesuatu seperti "Saya berharap mendapatkan hasil ini":
untuk pertanyaan Anda, orang-orang jauh lebih mungkin untuk dengan cepat memahami apa yang Anda coba lakukan. Jika hasil yang Anda harapkan besar dan sulit, maka Anda mungkin belum cukup memikirkan cara menyederhanakan masalah Anda (lihat selanjutnya).
Jelaskan Masalah Anda Secara Singkat
Hal utama yang harus dilakukan adalah menyederhanakan masalah Anda sebanyak mungkin sebelum Anda mengajukan pertanyaan. Membingkai ulang masalah agar berfungsi dengan dataset bawaan akan banyak membantu dalam hal ini. Anda juga akan sering menemukan bahwa hanya dengan melalui proses penyederhanaan Anda akan menjawab masalah Anda sendiri.
Berikut beberapa contoh pertanyaan bagus:
Dalam kedua kasus, masalah pengguna hampir pasti tidak dengan contoh sederhana yang mereka berikan. Sebaliknya mereka mengabstraksi sifat masalah mereka dan menerapkannya pada set data sederhana untuk mengajukan pertanyaan mereka.
Mengapa Ada Lagi Jawaban untuk Pertanyaan Ini?
Jawaban ini berfokus pada apa yang menurut saya merupakan praktik terbaik: gunakan kumpulan data bawaan dan berikan apa yang Anda harapkan sebagai hasil dalam bentuk minimal. Jawaban yang paling menonjol fokus pada aspek lain. Saya tidak mengharapkan jawaban ini naik ke keunggulan apa pun; ini di sini semata-mata agar saya dapat menautkannya dalam komentar untuk pertanyaan pemula.
sumber
Kode yang dapat direproduksi adalah kunci untuk mendapatkan bantuan. Namun, ada banyak pengguna yang mungkin skeptis menyisipkan bahkan sepotong data mereka. Misalnya, mereka dapat bekerja dengan data sensitif atau data asli yang dikumpulkan untuk digunakan dalam makalah penelitian. Untuk alasan apa pun, saya pikir akan menyenangkan memiliki fungsi praktis untuk "mendeformasi" data saya sebelum menempelkannya secara publik. The
anonymize
fungsi dari paketSciencesPo
ini sangat konyol, tapi bagi saya itu bekerja dengan baik dengandput
fungsi.Lalu saya anonimkan:
Seseorang mungkin juga ingin mengambil sampel beberapa variabel daripada seluruh data sebelum menerapkan perintah anonimisasi dan dput.
sumber
Seringkali Anda memerlukan beberapa data sebagai contoh, namun Anda tidak ingin memposting data yang tepat. Untuk menggunakan beberapa data.frame yang ada di perpustakaan yang didirikan, gunakan perintah data untuk mengimpornya.
misalnya,
dan kemudian lakukan masalahnya
sumber
mtcars
dan populeriris
) tidak benar-benar membutuhkandata
panggilan untuk digunakan.Jika Anda memiliki dataset besar yang tidak dapat dengan mudah dimasukkan ke skrip menggunakan
dput()
, posting data Anda ke pastebin dan muat menggunakanread.table
:Terinspirasi oleh @Henrik .
sumber
Saya sedang mengembangkan paket wakefield untuk mengatasi kebutuhan ini untuk dengan cepat berbagi data yang dapat direproduksi, kadang-kadang
dput
berfungsi dengan baik untuk set data yang lebih kecil tetapi banyak dari masalah yang kita tangani jauh lebih besar, berbagi set data yang besar melaluidput
tidak praktis.Tentang:
wakefield memungkinkan pengguna untuk membagikan kode minimal untuk mereproduksi data. Pengguna menyetel
n
(jumlah baris) dan menentukan sejumlah fungsi variabel preset (saat ini ada 70) yang meniru data real if (hal-hal seperti jenis kelamin, usia, pendapatan, dll.)Instalasi:
Saat ini (2015-06-11), wakefield adalah paket GitHub tetapi akan pergi ke CRAN setelah unit test ditulis. Untuk menginstal dengan cepat, gunakan:
Contoh:
Berikut ini sebuah contoh:
Ini menghasilkan:
sumber
Jika Anda memiliki satu atau lebih
factor
variabel dalam data yang ingin Anda buat direproduksidput(head(mydata))
, pertimbangkandroplevels
untuk menambahkannya , sehingga tingkat faktor yang tidak ada dalam kumpulan data yang diperkecil tidak termasuk dalamdput
output Anda , untuk buat contoh minimal :sumber
Saya ingin tahu apakah tautan http://old.r-fiddle.org/ bisa menjadi cara berbagi masalah yang sangat rapi. Ia menerima ID unik seperti dan orang bahkan bisa berpikir tentang menanamkannya dalam SO.
sumber
Tolong jangan tempel output konsol Anda seperti ini:
Kami tidak dapat menyalin-menempelkannya secara langsung.
Untuk membuat pertanyaan dan jawaban yang dapat direproduksi dengan benar, coba hapus
+
&>
sebelum mempostingnya dan berikan#
output dan komentar seperti ini:Satu hal lagi, jika Anda telah menggunakan fungsi apa pun dari paket tertentu, sebutkan perpustakaan itu.
sumber
>
dan menambahkan#
secara manual atau apakah ada cara otomatis untuk melakukannya?>
secara manual. Tapi, sebagai tambahan#
, saya menggunakanCtrl+Shift+C
shortcut diRStudio
editor.Anda dapat melakukan ini menggunakan reprex .
Seperti yang dicatat oleh mt1022 , "... paket yang bagus untuk menghasilkan contoh yang minimal dan dapat direproduksi adalah " reprex " dari tidyverse ".
Menurut Tidyverse :
Contoh diberikan di situs web rapi .
Saya pikir ini adalah cara paling sederhana untuk membuat contoh yang dapat direproduksi.
sumber
Terlepas dari semua jawaban di atas yang saya temukan sangat menarik, kadang-kadang bisa sangat mudah seperti yang dibahas di sini: - CARA MEMBUAT CONTOH REPRODUKSI MINIMAL UNTUK MENDAPATKAN BANTUAN DENGAN R
Ada banyak cara untuk membuat vektor acak. Buat vektor angka 100 dengan nilai acak dalam R dibulatkan menjadi 2 desimal atau matriks acak dalam R
Perhatikan bahwa kadang-kadang sangat sulit untuk membagikan data yang diberikan karena berbagai alasan seperti dimensi dll. Namun, semua jawaban di atas sangat bagus dan sangat penting untuk dipikirkan dan digunakan ketika seseorang ingin membuat contoh data yang dapat direproduksi. Tetapi perhatikan bahwa untuk membuat data sebagai representatif seperti aslinya (jika OP tidak dapat membagikan data asli), ada baiknya menambahkan beberapa informasi dengan contoh data sebagai (jika kita memanggil data mydf1)
Selain itu, orang harus mengetahui tipe, panjang, dan atribut dari suatu data yang dapat berupa struktur data
sumber
Berikut beberapa saran saya:
dput
, sehingga yang lain dapat membantu Anda dengan lebih mudahinstall.package()
kecuali itu benar-benar diperlukan, orang akan mengerti jika Anda hanya menggunakanrequire
ataulibrary
Cobalah untuk ringkas,
Semua ini adalah bagian dari contoh yang dapat direproduksi.
sumber
dput()
telah disebutkan sebelumnya, dan banyak dari ini hanya mengulangi pedoman standar SO.install.package
fungsi termasuk dalam contoh yang tidak benar-benar diperlukan (menurut pendapat saya). Selanjutnya, menggunakan dataset R default akan membuat yang direproduksi lebih mudah. Pedoman SO belum membicarakan apa pun tentang topik-topik ini secara khusus. Selanjutnya, itu dimaksudkan untuk memberikan pendapat saya dan ini adalah yang paling saya temui.Sebaiknya gunakan fungsi dari
testthat
paket untuk menunjukkan apa yang Anda harapkan terjadi. Dengan demikian, orang lain dapat mengubah kode Anda hingga berjalan tanpa kesalahan. Ini meringankan beban mereka yang ingin membantu Anda, karena itu berarti mereka tidak perlu men-decode deskripsi teks Anda. Sebagai contohlebih jelas daripada "Saya pikir x akan keluar menjadi 1,23 untuk y sama dengan atau melebihi 10, dan 3,21 sebaliknya, tapi saya tidak mendapat hasil". Bahkan dalam contoh konyol ini, saya pikir kodenya lebih jelas daripada kata-kata. Menggunakan
testthat
memungkinkan penolong Anda fokus pada kode, yang menghemat waktu, dan menyediakan cara bagi mereka untuk mengetahui bahwa mereka telah memecahkan masalah Anda, sebelum mereka mempostingnyasumber