【问题标题】:How to insert a string at repeated intervals of another string in R如何在R中的另一个字符串的重复间隔处插入一个字符串
【发布时间】:2020-12-19 16:29:21
【问题描述】:

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

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

【问题讨论】:

  • 也许c(rbind(matrix(sequence, 3, 4), "break"))
  • 我认为完整的答案是rep(c(rbind(matrix(sequence, 3, 4), "break")), length.out = 100)

标签: r string vector rep


【解决方案1】:

这是一种矢量化的基本 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"

【讨论】:

  • inds 对象是什么?
  • 粘贴答案时忘记复制了。检查更新的答案。
猜你喜欢
  • 2013-03-04
  • 2022-01-08
  • 2012-09-25
  • 2015-04-04
  • 2015-02-11
  • 2012-08-14
  • 2020-04-22
  • 2013-11-24
相关资源
最近更新 更多