如何根据R中的元素索引通过函数修改向量元素?

时间:2016-05-18 10:20:46

标签: r

假设我有一个向量:

my.vector <- rep(0, length.out = 100)

我想根据元素索引修改向量的每个元素一个新值。

当然,我可以使用for循环:

for(i in 1:length(my.vector)) {
  my.vector[[i]] <- my.vector[[i]] + i * 0.25
}

但我确信在R中有更好的方法可以做到这一点。

使用sapply

sapply(seq_along(my.vector), function(i) my.vector[[i]] + i * 0.25)

好的,我得到了相同的结果,但它的可读性较差。你知道其他更干净的方法吗?

3 个答案:

答案 0 :(得分:1)

只需创建一个新的向量,然后使用向量化的和:

sums_vec = (1:length(my.vector)) * 0.25
my.vector + sums_vec

答案 1 :(得分:1)

有很多方法可以解决这个问题。其中一个规范方法使用seq

myVectorSeq <- my.vector + seq(.25, 25, length.out=length(my.vector))

您可以使用seq_len来完成@ lorenzo-rossi的方法:

myVectorSeq <- my.vector + (seq_len(length(my.vector)) * .25)

seq_len,比更灵活的seq函数更快。

答案 2 :(得分:1)

我们可以使用seq_along

my.vector + seq_along(my.vector) *0.25