R 在向量中插入一个随机间隙

R 在向量中插入一个随机间隙,r,function,R,Function,我有一个蛋白质序列(例如,一个载体“I”“D”“I”“a”“S”) 我想实现一个函数,在该序列中插入一个随机间隔* 我该怎么做呢?例如 f <- function(x) { id <- sample(seq(x), 1) c(x[1:id], "*", x[-(1:id)]) } set.seed(123) f(c("I", "D", "I", "A", "S")) # [1] "I" "D" "*" "I" "A" "S" f(c("I", "D", "I", "A",

我有一个蛋白质序列(例如,一个载体
“I”“D”“I”“a”“S”

我想实现一个函数,在该序列中插入一个随机间隔
*

我该怎么做呢?

例如

f <- function(x) { 
  id <- sample(seq(x), 1)
  c(x[1:id], "*", x[-(1:id)])
}
set.seed(123)
f(c("I", "D", "I", "A", "S"))
# [1] "I" "D" "*" "I" "A" "S"
f(c("I", "D", "I", "A", "S"))
# [1] "I" "D" "I" "A" "*" "S"
f您可以尝试:

func_insert_at <- function(vec, elements, at){
x <- rep(NA, length(vec)+length(elements));
x[at] <- elements;x[-at] <- vec;x;}

vec <- c("I", "D", "I", "A", "S")
set.seed(23)
func_insert_at(vec, "*", ceiling(runif(1, 0, length(vec))))
# [1] "I" "D" "*" "I" "A" "S"
func_insert_at(vec, "*", ceiling(runif(1, 0, length(vec))))
# [1] "I" "*" "D" "I" "A" "S"

查看
Biostrings
软件包和函数
replaceAt
,您可以使用
sample
向其输入一个随机数。
elements=c("M", "O", "H")
positions=c(1,3,6)
func_insert_at(vec, elements, positions)
# [1] "M" "I" "O" "D" "I" "H" "A" "S"