首页 > 解决方案 > 在循环中的特定数字之间放置值

问题描述

所以可以说我有

x = 1,4,2
i = 2
j = 4 
k = 3 

所以 i = 2 和 j = 4,关键是我需要在 x 中的数字 i,j 之间放置 k (3),因此结果将是 x = 1,4,3,2。我需要它在一个循环中工作,因为 i,j,k 中的数字总是会改变,当来自 k 的新数字放入 x 时 x 的长度也会改变。第一步之后的新 x 是 x = 1,4,3,2 并且可以说新值:

i = 4
j = 3
k = 5  so again in the cycle it should place 5 in x between 4 and 3 so final x = 1,4,5,3,2

有办法我可以做到吗?

标签: rcycle

解决方案


当 i 总是 j 之前的数字时,

你可以使用append功能:

IE:

x = c(1,4,2)
i = 4 
k = 3 

x <- append(x, k, match(i, x))
x
[1] 1 4 3 2

 i = 4
 k = 5
x <- append(x, k, match(i, x))
x
[1] 1 4 5 3 2

把它放在一个函数中:

insert <- function(x, k, i){
    append(x, k, match(i, x))
}

请注意,您没有指定如果向量中有超过 1 个 4 会发生什么。即x<- c(1,4,2,4,2)你到底想把3放在哪里?是在前四个之后还是后四个?ETC


推荐阅读