R 中的 rep():解碼複製函數
已發表: 2020-06-15在我們談論R 中的 rep之前,我們必須知道迭代是什麼。 術語迭代意味著重複。 與大多數其他編程語言一樣,傳統的循環或迭代是 R 的核心方面。
雖然常規循環是一種有效的數據管理方法,但它們的成本很高,唯一的原因是迭代是內存和耗時的。 一個很好的替代方法是使用可以實現與迭代相同目標的向量化方法; rep() 函數是這樣一個矢量化循環函數的成員。
目錄
什麼是 rep() 函數?
簡單來說, R中的 rep 或 rep() 函數將數值、文本或向量的值複製特定次數。 rep() 函數是 R 基礎包的 apply() 系列函數的成員。 apply() 系列包含用於重複操作來自數組、矩陣、數據框和列表的數據的函數。
apply() 函數避免使用循環構造來作用於數組、矩陣或輸入列表,並應用帶有可選參數的命名函數。 被調用的函數可以是聚合函數、變換函數或向量化函數,例如數組、向量、列表和矩陣。 查看我們的數據科學課程以了解有關函數的更多信息。
閱讀更多: Python 中的數據幀:Python 深入教程
矢量化計算與迭代
向量化方法不是對序列的單個元素進行操作,而是同時對所有向量分量進行操作。 因此,矢量化計算總是能獲得更快的結果。
為了說明向量化計算的速度,我們將使用一個示例來確定 for() 循環生成大向量所用的時間。 在該示例中,每個元素按從 1 到 N(其中 N = 10,000,000)的增量累積總和順序計算。 通過速度測試在 for() 循環迭代和矢量化函數之間進行了比較。

資源
在比較速度測試的結果時,很明顯矢量化計算(速度測試 2)所用的時間明顯快於 for() 循環。 在迭代循環一次的時間內,向量化計算可以重複278次。
重複與復制功能
當我們想要重複執行相同的代碼塊直到滿足特定條件時,使用 R 中的重複函數或循環。 它與重複執行命令塊直到中斷的 for 和 while 循環非常相似。 創建重複循環的基本語法是:
重複 {
如果(條件){
休息
}
}
以下示例將闡明重複功能的使用:


在上面的示例中,重複循環對值求和,直到達到 6。一旦循環達到 6,循環通過打印“重複循環結束”而中斷。
另一方面,R 中的複制函數或 rep 用於復制值。 使用 rep() 函數的基本 R 語法是:
- 代表(值,number_of_times)
- 代表(序列,每個,number_of_times)
下面是一些理解 rep() 函數的例子:
示例:使用 rep() 函數將值複製特定次數



在上面的示例中,值 2 重複了十次。
示例:使用具有長度屬性的 rep() 函數

在上面的示例中,按順序打印 1 到 4,直到元素數量達到 20。
示例:使用 rep() 函數複製列表

在上面的例子中,從 1 到 5 的評分列表重複了三次。
資源
使用 rep() 函數擴展向量
rep() 函數是一種重複向量的靈活方式。 以下是更多示例:

如果我們需要將實驗/觀察單位的統計向量擴展為具有重複觀察單位的數據框的向量,則每個參數都非常方便。 例子:

rep() 的另一個特性是,通過將長度參數替換為指定向量中每個元素將重複的次數的向量,向量可以擴展為不平衡面板。 例子:

rep 函數的更簡單和更快的版本包括 rep_len() 和 rep.int()。 這些較新的版本沒有 rep() 的某些屬性,但在速度是原始的並且重複向量的額外方面不受歡迎的情況下證明是有用的。

資源
閱讀: 6 個適合初學者的有趣 R 項目創意
結論
在本文中,我們通過合適的示例討論了重複和復制功能。 雖然傳統的迭代對於重複執行代碼塊很有用,但R 中的 rep非常適合複製向量或列表的值。 高效省時,rep() 函數簡化了向量複製!
如果您想了解 R(數據科學),請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃是為在職專業人士創建的,並提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導,與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。
如何在 R 中創建具有重複值的向量?
R 中的 rep() 函數可用於重複一系列整數。 在 R 中,有兩種技術可以創建具有重複值的向量; 第一種方法重複向量中的每個元素,而第二種方法將元素重複給定次數。 在每種方法中,向量都是使用 rep 函數創建的。 例如,rep(1:5, times=5) 給出一個序列 1 到 5 重複 5 次的向量。
哪個函數更快——複製還是循環?
在 R 編程語言中,For 循環函數比複製函數更快。 for 循環是一種通過為列表中的每個值運行代碼來循環使用各種編程語言的值列表的技術。 rep() 是一個矢量化循環函數,其唯一目的是在不浪費內存的情況下運行。 當您需要更改現有數據框的一部分時,For 循環通常是最佳選擇。
如何加快 R 代碼的速度?
下面列出了一些加速 R 代碼的方法:-
1. 在將數據結構和輸出變量放入循環進行計算之前,請確保它們的長度和數據類型正確。 在循環內部,盡量不要逐步擴大數據量。
2. 如果可能,使用矩陣而不是數據框,因為數據框在許多情況下會產生問題。 因此,僅在絕對必要時才使用數據幀。
3. 盡可能使用向量和矩陣運算。
4. 在 R 中,不要更改對象的類型或大小。 更改 R 對象的類型和大小會導致它重新分配內存空間,這在默認情況下是不夠的。
