使用索引的倍数保留或替换向量中的值

时间:2018-11-22 21:57:39

标签: r vector sequence

“平均值”是1x756的数字矢量

这是我要编写的序列(数字矢量):

L <- c(rep(0, 251), Mean[252],
       rep(0, 251), Mean[252*2],
       rep(0, 251), Mean[252*3])

也就是说,我想保留252的倍数。其他索引应替换为零。

我有一种更聪明的书写方式吗?

2 个答案:

答案 0 :(得分:3)

在向量的序列上使用%%(以模数为单位),替换的(第一个)索引为除数。替换除法结果为零*的值。

Mean[seq_along(Mean) %% 252 != 0] <- 0

较小的示例,其中也避免了第一个索引的硬编码:

set.seed(2)
x <- sample(12)

x[seq_along(x) %% (length(x) / 3) != 0] <- 0
x
# [1]  0  0  0  2  0  0  0  5  0  0  0 10

*感谢@snoram提出了更直接的选择。

答案 1 :(得分:1)

SELECT ... WHERE (colname LIKE text1 OR colname LIKE text2 OR colname LIKE text3 OR ....... colname LIKE textn) OR (colname LIKE 'text1 text2 text3 ...textn') 中,我们可以分成几组,然后进行串联

R

数据

i1 <- rep(1:3, each = 252) 
i2 <- rep(1:3, each = 251)
unlist(Map(c, split(rep(0, 753), i2), split(Mean * i1, i1)), use.names = FALSE)