如何在R语言中交替固定字符串与带序号的字符串?
问题描述
我需要实现固定字符串与带有序号的字符串交替输出的效果。例如,用rep()重复字符串模式的代码如下:
> rep(c("Filler","Model"),2) [1] "Filler" "Model" "Filler" "Model" "Filler" "Model"
但我想要得到如下结果:
[1] "Filler" "Model 1" "Filler" "Model 2" "Filler" "Model 3"
请问能否将rep()函数与sprintf()函数结合来实现该需求?
解决方案
当然可以结合rep()和sprintf()实现这个效果,核心思路是先生成带序号的"Model"字符串,再和重复的"Filler"按顺序交替拼接。
直接看代码:
# 生成带序号的Model系列字符串 model_list <- sprintf("Model %d", 1:3) # 生成对应数量的Filler字符串 filler_list <- rep("Filler", length(model_list)) # 交替合并两个向量 final_result <- c(rbind(filler_list, model_list)) # 查看结果 final_result
运行后输出就是你想要的:
[1] "Filler" "Model 1" "Filler" "Model 2" "Filler" "Model 3"
嫌麻烦的话也可以把代码压缩成一行:
c(rbind(rep("Filler", 3), sprintf("Model %d", 1:3)))
原理很简单:sprintf()负责给"Model"加上递增的序号,rep()生成对应次数的"Filler",再用rbind()把两个列表按行绑定成矩阵,最后用c()把矩阵拉成一维向量,自然就实现了交替输出的效果。
内容的提问来源于stack exchange,提问作者ssjjaca
相关产品推荐
相关产品推荐

