📜  在 R 中创建重复值序列

📅  最后修改于: 2022-05-13 01:55:27.354000             🧑  作者: Mango

在 R 中创建重复值序列

重复的数字序列是按顺序排列的递增数字列表,使得连续数字之间的差为 1,并且这些数字中的每一个都重复指定的次数。 R 为我们提供了多种方法来使用向量或整数生成重复序列。在本文中,我们将了解如何在 R 编程中创建重复值序列。

方法一:使用rep()方法

基 R 的 rep() 方法用于从指定向量生成复制序列,其中向量的每个元素可以重复任意指定次数。此方法可以采用字符、浮点数或整数类型的输入向量。

示例 1:创建重复值的字符序列。

R
# declaring vector
vec <- LETTERS[1 : 4]
 
# replicate each letter in vec 3 times
print ("Replicated Sequence")
rep(vec, each = 3)


R
# declaring vector
vec <- c(60 : 62)
 
# replicate each integer in vec 3 times
print ("Replicated Sequence")
rep(vec, each = 2)


R
# generate a sequence of 1:6 each
# repeated 4 times
gl(6 , 4 )


R
# generate a sequence of 1:6 each
# repeated 3 times until length=20
gl(6 , 3 , length = 20)


R
# generate a sequence of 1:5
# each repeated 2 times assigned
# labels from 100
seq1 <- gl(5, 2, labels = c(100 : 104))
print("Sequence 1")
print (seq1)
 
# generate a sequence of 1:5
# each repeated 2 times assigned
# labels as letters from a
seq2 <- gl(5, 2, labels = letters[ 1 : 5 ])
print("Sequence 2")
print (seq2)


输出:

[1] "Replicated Sequence"
[1] "A" "A" "A" "B" "B" "B" "C" "C" "C" "D" "D" "D"

示例 2:创建重复值的整数序列。

电阻

# declaring vector
vec <- c(60 : 62)
 
# replicate each integer in vec 3 times
print ("Replicated Sequence")
rep(vec, each = 2)

输出

[1] "Replicated Sequence"
[1] 60 60 61 61 62 62

方法 2:使用gl()方法。

基础 R 中的 gl() 方法用于以模式规范的形式生成因子。输出取决于级别的数量,每个级别都被复制 k 次,直到达到长度。如果不指定长度,则取长度为层数*每一层的重复次数。这种方法的缺点是它总是生成一个介于 1 到 n 之间的序列。但是,如果我们需要否决这个默认标签,可以为输出分配一个定制的标签向量。



代码:

电阻

# generate a sequence of 1:6 each
# repeated 4 times
gl(6 , 4 )

输出:

[1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6
Levels: 1 2 3 4 5 6

如果长度大于n×k,则在末尾再次追加相同的序列,直到达到向量的总长度。

电阻

# generate a sequence of 1:6 each
# repeated 3 times until length=20
gl(6 , 3 , length = 20)

输出:

[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 1 1
Levels: 1 2 3 4 5 6

解释:由于 6×3 = 18,因此,从头开始附加相同的序列,直到达到 length=20。因此,在末尾添加 1 1。

此外,可以为序列分配自定义标签,因此实际序列数字可以由标签向量的相应字母替换。为确保正确映射,标签向量的长度应与因子级别数相同。

'

电阻

# generate a sequence of 1:5
# each repeated 2 times assigned
# labels from 100
seq1 <- gl(5, 2, labels = c(100 : 104))
print("Sequence 1")
print (seq1)
 
# generate a sequence of 1:5
# each repeated 2 times assigned
# labels as letters from a
seq2 <- gl(5, 2, labels = letters[ 1 : 5 ])
print("Sequence 2")
print (seq2)

输出:

[1] "Sequence 1"
[1] 100 100 101 101 102 102 103 103 104 104
Levels: 100 101 102 103 104
[1] "Sequence 2"
[1] a a b b c c d d e e
Levels: a b c d e

解释:在序列1中,原序列中1的每个实例都被101替换,2被102替换,以此类推。类似地,在序列 2 中,1 的每个实例都被替换为“a”,2 被替换为“b”,依此类推。