當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R rep 複製向量和列表的元素


R語言 rep 位於 base 包(package)。

說明

rep 複製 x 中的值。它是一個通用函數,(內部)默認方法在此處說明。

rep.intrep_len 是兩種常見情況的更快簡化版本。在內部,它們是通用的,因此可以為它們定義方法(參見InternalMethods)。

用法

rep(x, ...)

rep.int(x, times)

rep_len(x, length.out)

參數

x

向量(包括 list 在內的任何模式)或因子或(僅適用於 rep)POSIXctPOSIXltDate 對象;或包含此類對象的 S4 對象。

...

要傳遞給其他方法或從其他方法傳遞的更多參數。對於內部默認方法,這些可以包括:

times

一個整數值向量,給出重複每個元素(如果長度為 length(x) )的次數(非負),或者重複整個向量(如果長度為 1)的次數。負值或 NA 值是錯誤的。接受 double 向量,其他輸入被強製為整數或雙精度向量。

length.out

非負整數。輸出向量的所需長度。其他輸入將被強製為雙向量並采用第一個元素。如果 NA 或無效則忽略。

each

非負整數。 x 的每個元素都重複 each 次。其他輸入將被強製為整數或雙精度向量並采用第一個元素。如果NA 或無效,則視為1

times, length.out

請參閱上麵的...

細節

默認行為就好像調用是

  rep(x, times = 1, length.out = NA, each = 1)

。通常隻指定一個附加參數,但如果使用其他兩個參數之一指定了 each,則首先執行其複製,然後執行 timeslength.out 所暗示的複製。

如果 times 由單個整數組成,則結果由重複多次的整個輸入組成。如果 times 是與 x 長度相同的向量(經過 each 複製後),則結果由 x[1] 重複 times[1] 次、x[2] 重複 times[2] 次等組成。

length.out 可以代替 times ,在這種情況下, x 會根據創建此長度的向量所需的次數重複。如果兩者都給出,則 length.out 優先,times 被忽略。

times 的非整數值將被截斷為零。如果 times 是計算量,則謹慎添加小模糊或使用 round 。類似地,each

如果 x 的長度為零,並且提供了 length.out 並且為正數,則使用提取規則填充這些值,即通過原子向量的適當類的 NA(原始向量為 0)和NULL 列表。

x 類型相同的對象。

rep.intrep_len 不返回任何屬性(如果返回因子,則類除外)。

如果 x 有名稱,則 rep 的默認方法會給出結果名稱(幾乎總是包含重複項),但不保留其他屬性。

注意

函數 rep.int 是一個簡單的情況,它作為單獨的函數提供,部分是為了 S 兼容性,部分是為了速度(特別是當可以刪除名稱時)。此後,rep 的性能得到了改進,但當 x 有名稱時,rep.int 的速度仍然至少是原來的兩倍。

名稱rep.int long 先於使rep 通用。

函數 rep 是一個原語,但參數名稱的(部分)匹配與普通函數一樣執行。

由於曆史原因,rep(僅)適用於NULL:即使length.out 為正,結果也始終為NULL

盡管從未有過記錄,但這些函數始終適用於 expression 向量。

例子

rep(1:4, 2)
rep(1:4, each = 2)       # not the same.
rep(1:4, c(2,2,2,2))     # same as second.
rep(1:4, c(2,1,2,1))
rep(1:4, each = 2, length.out = 4)    # first 4 only.
rep(1:4, each = 2, length.out = 10)   # 8 integers plus two recycled 1's.
rep(1:4, each = 2, times = 3)         # length 24, 3 complete replications

rep(1, 40*(1-.8)) # length 7 on most platforms
rep(1, 40*(1-.8)+1e-7) # better

## replicate a list
fred <- list(happy = 1:10, name = "squash")
rep(fred, 5)

# date-time objects
x <- .leap.seconds[1:3]
rep(x, 2)
rep(as.POSIXlt(x), rep(2, 3))

## named factor
x <- factor(LETTERS[1:4]); names(x) <- letters[1:4]
x
rep(x, 2)
rep(x, each = 2)
rep.int(x, 2)  # no names
rep_len(x, 10)

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

seqsequencereplicate

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Replicate Elements of Vectors and Lists。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。