R语言中的循环补齐

2023-03-17 22:39:03 浏览数 (3)


title: "循环补齐"

output: html_document

date: "2023-03-08"


当我们对两个长度不一致的向量进行操作时,会发生什么呢?

代码语言:text复制
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y
代码语言:txt复制
## [1] FALSE FALSE  TRUE FALSE  TRUE

虽然出现了提示Warning: longer object length is not a multiple of shorter object length,并没有发生报错。

从输出结果看,返回了和x长度相等的5个逻辑值,这实际上是发生了R语言中的循环补齐所导致的。下面让我们跟随一些简单的代码示例一起认识一下循环补齐!

1.循环补齐的概念:指的是当对长度不等的向量进行操作时,R语言会自动复制短向量的元素,补齐到和长向量相同的长度,以长向量的长度为准。(个人理解,仅供参考)

2.循环补齐的发生条件:当向量的长度不等,且进行等位运算时,R语言会自动发生循环补齐

","<")">(1)比较运算("==",">","<")

代码语言:text复制
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y
代码语言:txt复制
## [1] FALSE FALSE  TRUE FALSE  TRUE
代码语言:text复制
x > y
代码语言:txt复制
## [1] FALSE  TRUE FALSE  TRUE FALSE
代码语言:text复制
x < y
代码语言:txt复制
## [1]  TRUE FALSE FALSE FALSE FALSE

(2)数学计算( ,-,*,/)

代码语言:text复制
x   y
代码语言:txt复制
## [1]  4  5 10  9  4
代码语言:text复制
x - y
代码语言:txt复制
## [1] -2  1  0  3  0
代码语言:text复制
x * y
代码语言:txt复制
## [1]  3  6 25 18  4
代码语言:text复制
x / y
代码语言:txt复制
## [1] 0.3333333 1.5000000 1.0000000 2.0000000 1.0000000

(3)连接(paste和paste0)

代码语言:text复制
paste(x,y,sep = ",")
代码语言:txt复制
## [1] "1,3" "3,2" "5,5" "6,3" "2,2"
代码语言:text复制
paste0(x,y)
代码语言:txt复制
## [1] "13" "32" "55" "63" "22"

3.循环补齐的应用:可以利用循环补齐来简化R语言的代码

例1

代码语言:text复制
paste0(rep("x",3),1:3)
代码语言:txt复制
## [1] "x1" "x2" "x3"
代码语言:text复制
paste0("x",1:3)
代码语言:txt复制
## [1] "x1" "x2" "x3"

两句代码输出了同样的结果,但第二句利用循环补齐有效简化了代码

例2

代码语言:text复制
paste0(rep("student",times = 7),seq(from = 2, to = 15,by = 2))
代码语言:txt复制
## [1] "student2"  "student4"  "student6"  "student8"  "student10"
## [6] "student12" "student14"
代码语言:text复制
paste0("student",seq(2,15,2))
代码语言:txt复制
## [1] "student2"  "student4"  "student6"  "student8"  "student10"
## [6] "student12" "student14"

同样利用循环补齐达到了简化代码的目的

引用自生信技能树

1 人点赞