Ketika saya melihat sumber Paket R, saya melihat fungsi yang sweep
digunakan 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 sweep
efek menggunakan fungsi yang lebih sederhana menunjukkan bahwa saya tidak memahami sweep
kasus penggunaan inti, dan fakta bahwa fungsi ini sering digunakan menunjukkan bahwa ini cukup berguna.
Isi:
sweep
adalah 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 apply
meskipun sweep
membutuhkan satu parameter lagi STATS
,.
Perbedaan utama lainnya adalah sweep
mengembalikan larik dengan bentuk yang sama seperti larik masukan, sedangkan hasil yang dikembalikan apply
bergantung 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 sweep
kode mereka sendiri.
apply
yang bisa saya temukan untuk hasil ini adalah sesuatu seperti t(apply(t(M), 2, "-", dx))
, tapi itu cukup buruk.