假设我有一个这样的矢量:
[1] 0 1 0 0 0 0 0 -1 0 1 0 0 -1 0 0 1 -1
我想把这个矢量变成这样:
[1] 0 100 100 100 100 100 100 100 0 101 101 101 101 0 0 102 102
只是在[1,-1]之间插入一个值,并随索引增加。
如何在不使用循环的情况下获得此结果?
原始数据集可以通过以下代码生成:
a = c(0,1,0,0,0,0,0,-1,0,1,0,0,-1,0,0,1,-1)
答案 0 :(得分:2)
我们可以使用Map
获取rbind
中值1和-1的位置,根据使用{{1}的位置之间的相应长度复制值100:102 },matrix
创建m1 <- do.call(rbind,Map(function(x,y,z)
cbind(x:y,rep(z, y-x+1)), which(a==1), which(a==-1), 100:102))
a[m1[,1]] <- m1[,2]
a
#[1] 0 100 100 100 100 100 100 100 0 101 101 101 101 0 0 102 102
。并用'm1'的第二列替换'a'中与'm1'中第一列位置相对应的位置。
Request.IsAuthenticated
答案 1 :(得分:2)
试试这个:
$wpq = array(
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 6,
'post_type' => 'post',
'taxonomy' => 'category',
'term' => 'category-slug'
);
$recent = new WP_Query ($wpq);
答案 2 :(得分:2)
我认为这很有效,
tmp <- rle(cumsum(a) | a)
tmp$values[tmp$values] <- 99 + cumsum(tmp$values[tmp$values])
inverse.rle(tmp)
# [1] 0 100 100 100 100 100 100 100 0 101 101 101 101 0 0 102 102