R 向向量的每个元素添加两个数字
我有一个向量,在向量的每个元素上,我想交替添加多个数字,例如0和1 例如,从序列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,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