问题描述
我在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"