当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。