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


