我有一个向量,并且我想要添加多个数字的向量的每个元素,例如0和1,交替顺序。
例如,从序列0,1,2,3,4,5
开始,我想先得到0,1,1,2,2,3,3,4,4,5,5,6
,然后先为每个元素添加0然后再加1。
a <- c(0:5)
c(a+0, a+1) # does not give me what I want
我真正希望用这个来解决的是,我想从一个语句为真的向量中提取元素,而不管该语句是否适用于该行。
也许有人有想法?
答案 0 :(得分:2)
为了交错,您可以将rbind
与c
a <- c(0:5)
c(rbind(a+0,a+1))
对于后面的问题,我会使用which
语句根据条件得到True的索引,然后得到相应的元素。
答案 1 :(得分:2)
更简单的Aramis7d创意实现使用rep
的每个参数。
rep(1:5, each=2) + 0:1
[1] 1 2 2 3 3 4 4 5 5 6
答案 2 :(得分:1)
为了解决你的实际问题,即#34;从一个陈述为真的向量中提取元素,然后你就可以解决这个问题&#34;,你可以解决这个问题:
让我们说条件是一个数字等于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]
返回:
[1] 1 2 1 2 1 2
希望这有帮助。
答案 3 :(得分:1)
你可以尝试:
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