全称叫Replicate Elements of Vectors and Lists 向量和列表的复制,是基础函数(就是安装上R就直接有的函数)
rep()
通用写法:
rep(x, ...)
x表示向量或因子等。a vector (of any mode including a [list]
) or a factor or (for rep
only) a POSIXct
or POSIXlt
or Date
object; or an S4 object containing such an object.
···表示进一步的或从其他方法传入的各种参数。对于内部默认方法,这些参数可以包括:
-
1、times
一个整数值向量,如果长度设定为length(x),给定重复每个元素的次数(非负),如果长度为1,则重复整个向量。负值或NA值会报错的。接受双向量,其他输入强制转换为整数或双向量。
-
2、length.out
非负整数。希望输出的向量长度。其他输入将强制转换为一个双向量并取第一个元素。如果是NA或无效这个参数就被忽略。
-
3、each
非负整数。x的每个元素都会被重复的次数。其他输入将强制转换为一个双向量并取第一个元素。如果是NA或无效这个参数就被认为=1。
规则:
1、通常只指定times、length.out、each其中一个附加参数,但如果使用其他两个参数中的任何一个与each参数搭配,则首先执行其each的复制,然后由times或length.out来决定,如下:
2、如果times由单个整数组成,则结果由重复多次的整个输入X组成。如果times是一个与x相同长度的向量(经过each的复制后),则结果是x[1]重复times[1]次,x[2]重复times[2]次,以此类推。如下:
3、length.out可以代替times,在这种情况下,x重复多次直到达到length.out规定的长度的为止。如果两者都设定了,则length.out优先,times被忽略。如下:
因此,优先顺序:each>length.out > times
4、times如果是非整数值,那么小数点后面部分会被直接截断为零(不会四舍五入的)。如果times是一个计算量,则谨慎地添加一个小值(比如+0.5)或使用round函数(以达到四舍五入的目的)。each参数也是类似。如下:
5、如果x的实际长度为0,length.out参数输出是正数,使用提取规则填充值,对于原子向量,使用适当类的NA(0表示原始向量),对于列表,使用NULL。
6、留一个问题没搞懂: