जब मैं आर संकुल के स्रोत को देखता हूं, तो मैं फ़ंक्शन का sweep
उपयोग अक्सर देखता हूं । कभी-कभी इसका उपयोग तब किया जाता है जब एक सरल फ़ंक्शन पर्याप्त होगा (जैसे, apply
), अन्य बार, यह जानना असंभव है कि कोड ब्लॉक के माध्यम से कदम उठाने के लिए उचित समय खर्च किए बिना यह क्या कर रहा है।
तथ्य यह है कि मैं sweep
एक सरल फ़ंक्शन का उपयोग करके प्रभाव को पुन: उत्पन्न कर सकता हूं, यह बताता है कि मैं sweep
कोर के उपयोग के मामलों को नहीं समझता हूं , और यह तथ्य कि इस फ़ंक्शन का उपयोग अक्सर किया जाता है, यह बताता है कि यह काफी उपयोगी है।
प्रसंग:
sweep
आर के मानक पुस्तकालय में एक समारोह है; इसके तर्क हैं:
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
आप देख सकते हैं, तर्क के समान हैं apply
, हालांकि sweep
, एक और पैरामीटर की आवश्यकता है STATS
।
एक अन्य महत्वपूर्ण अंतर यह है कि इनपुट सरणी sweep
के समान आकार का एक सरणी देता है , जबकि लौटाया गया परिणाम पास किए गए apply
फ़ंक्शन पर निर्भर करता है।
sweep
कार्रवाई में:
# 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
तो संक्षेप में, मैं जो देख रहा हूं वह एक अनुकरणीय उपयोग का मामला है या दो के लिए है sweep
।
कृपया, आर डॉक्यूमेंटेशन, मेलिंग सूचियों या किसी भी 'प्राथमिक' आर स्रोतों के बारे में न तो सुनें और न ही लिंक करें - मान लें कि मैंने उन्हें पढ़ा है। मैं जिस चीज में दिलचस्पी रखता हूं वह यह है कि अनुभवी आर प्रोग्रामर / विश्लेषक sweep
अपने कोड में कैसे उपयोग करते हैं।
apply
मैं इस परिणाम के लिए यह पता लगा सकता हूं कि इसका एकमात्र उपयोग कुछ ऐसा है t(apply(t(M), 2, "-", dx))
, लेकिन यह बहुत बुरा है।