R 向向量的每个元素添加两个数字

R 向向量的每个元素添加两个数字,r,R,我有一个向量,在向量的每个元素上,我想交替添加多个数字,例如0和1 例如,从序列0,1,2,3,4,5中,我想通过先向每个元素添加0,然后依次向每个元素添加1来获得0,1,1,2,2,3,3,4,4,5,5,6 a <- c(0:5) c(a+0, a+1) # does not give me what I want a为了进行交织,您可以将rbind与c a <- c(0:5) c(rbind(a+0,a+1)) a要解决您的实际问题,即“从一条语句为真的向量加上其后的元素中

我有一个向量,在向量的每个元素上,我想交替添加多个数字,例如0和1

例如,从序列
0,1,2,3,4,5
中,我想通过先向每个元素添加0,然后依次向每个元素添加1来获得
0,1,1,2,2,3,3,4,4,5,5,6

a <- c(0:5)
c(a+0, a+1) # does not give me what I want

a为了进行交织,您可以将
rbind
c

a <- c(0:5)
c(rbind(a+0,a+1))

a要解决您的实际问题,即“从一条语句为真的向量加上其后的元素中提取元素”,您可以按如下方式解决该问题:

假设条件是一个数字等于1,您要提取这些元素,加上后面的元素:

a <- c(1,2,4,1,2,4,1,2,4)
condition = a==1
condition_shifted = c(FALSE,head(condition,-1))
a[condition | condition_shifted]
希望这有帮助。

您可以尝试:

as.vector(sapply(a, function (x) rep(x,2))) + c(0,1)
其中:

 [1] 0 1 1 2 2 3 3 4 4 5 5 6

Aramis7d思想的一个更简单的实现使用each参数来
rep

rep(1:5, each=2) + 0:1
 [1] 1 2 2 3 3 4 4 5 5 6

对于您的最终目标,您可能可以执行类似于
x[head(x==5,-1)和tail(x==5,-1)]
的操作,修改
x==5
以适合您想要的任何测试。请注意,最后的元素将不会被提取。感谢lmo的反馈。我修改了我的答案。我知道运算符的优先级,但这确实是一个容易犯的错误,使用head或tail可以很容易地避免。。
rep(1:5, each=2) + 0:1
 [1] 1 2 2 3 3 4 4 5 5 6