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"
同样利用循环补齐达到了简化代码的目的
引用自生信技能树