Ketika saya melihat sumber Paket R, saya melihat fungsi yang sweepdigunakan cukup sering. Kadang-kadang digunakan ketika fungsi yang lebih sederhana sudah cukup (misalnya, apply), di lain waktu, tidak mungkin untuk mengetahui dengan tepat apa yang dilakukannya tanpa menghabiskan cukup banyak waktu untuk melangkah melalui blok kode di dalamnya.
Fakta bahwa saya dapat mereproduksi sweepefek menggunakan fungsi yang lebih sederhana menunjukkan bahwa saya tidak memahami sweepkasus penggunaan inti, dan fakta bahwa fungsi ini sering digunakan menunjukkan bahwa ini cukup berguna.
Isi:
sweepadalah fungsi di perpustakaan standar R; argumennya adalah:
sweep(x, MARGIN, STATS, FUN="-", check.margin=T, ...)
# x is the data
# STATS refers to the summary statistics which you wish to 'sweep out'
# FUN is the function used to carry out the sweep, "-" is the default
Seperti yang Anda lihat, argumennya mirip applymeskipun sweepmembutuhkan satu parameter lagi STATS,.
Perbedaan utama lainnya adalah sweepmengembalikan larik dengan bentuk yang sama seperti larik masukan, sedangkan hasil yang dikembalikan applybergantung pada fungsi yang diteruskan.
sweep sedang beraksi:
# e.g., use 'sweep' to express a given matrix in terms of distance from
# the respective column mean
# create some data:
M = matrix( 1:12, ncol=3)
# calculate column-wise mean for M
dx = colMeans(M)
# now 'sweep' that summary statistic from M
sweep(M, 2, dx, FUN="-")
[,1] [,2] [,3]
[1,] -1.5 -1.5 -1.5
[2,] -0.5 -0.5 -0.5
[3,] 0.5 0.5 0.5
[4,] 1.5 1.5 1.5
Singkatnya, yang saya cari adalah satu atau dua contoh kasus penggunaan sweep.
Harap, jangan membaca atau menautkan ke Dokumentasi R, milis, atau sumber R 'utama' - anggap saja saya telah membacanya. Yang saya minati adalah bagaimana programmer / analis R berpengalaman menggunakan sweepkode mereka sendiri.
applyyang bisa saya temukan untuk hasil ini adalah sesuatu seperti t(apply(t(M), 2, "-", dx)), tapi itu cukup buruk.