如何在R中另一个字符串的重复间隔处插入一个字符串

问题描述

我在R中有一个x个元素的向量。我想重复此向量,每y个重复插入另一个字符串中。例如,我下面有sequence,并且想生成sequence_breaks,它的长度为4,在每第4个项目插入另一个字符串时重复。我该如何使sequence_breaks达到一定长度(例如100)?

sequence <- c('a','b','c','d')
sequence_breaks <- c('a','break','d','a',' break')

解决方法

这是一种矢量化的基本R方式:

insert_text <- 'break'
n <- 100
insert_num <- 4

#Extend sequence till length n
new_vec <- rep(sequence,length.out = n)
#Create a sequence over new_vec
inds <- seq_along(new_vec)
#index to insert new text
b <- inds %% insert_num == 0
#Shift values by 1
new_vec1 <- new_vec[inds - cumsum(b)]
#insert the value at b
new_vec1[b] <- insert_text

#  [1] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
#  [9] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [17] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
# [25] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [33] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
# [41] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [49] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
# [57] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [65] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
# [73] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [81] "a"     "b"     "c"     "break" "d"     "a"     "b"     "break"
# [89] "c"     "d"     "a"     "break" "b"     "c"     "d"     "break"
# [97] "a"     "b"     "c"     "break"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...