當我看R軟件包的來源時,我看到功能掃描經常使用。 有些時候,如果一個簡單的函數在其他時候已經足夠(例如「應用」), 就可以使用它,但不可能確切知道它在做什麼,而不需要花費相當多的時間來遍歷它所在的代碼塊。如何使用R功能'掃描'
我可以使用更簡單的函數重現掃描效果的事實表明我不明白掃描的核心用例,而且這個函數經常使用的事實表明它非常有用。
上下文:
掃是R中的標準庫函數;它的方法簽名是:
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
正如你所看到的,方法簽名類似於「應用」雖然「掃」需要 一個參數,「STATS」。
另一個關鍵的區別是,「掃描」返回相同的形狀作爲輸入數組的數組,而由「應用」返回的結果取決於傳入的功能。
在動作掃 :
# 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
所以總之,我要找的是一個典型的用例或兩個掃。
請不要背誦或鏈接到R文檔,郵件列表或任何「主要」R來源 - 假設我已經閱讀過它們。我感興趣的是經驗豐富的R程序員/分析師在自己的代碼中使用掃描。
M-DX不復制您的結果。你是在自問自答。 – John 2010-08-10 00:59:59
我可以計算出這個結果的'apply'的唯一用法就像't(apply(t(M),2, - - ,,dx))',但這很糟糕。 – 2011-05-04 14:32:48