【问题标题】:How to modify vector elements by a function depending on the element index in R?如何根据R中的元素索引通过函数修改向量元素?
【发布时间】:2016-05-18 10:20:46
【问题描述】:

假设我有一个向量:

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)

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

【问题讨论】:

    标签: r


    【解决方案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】:

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

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

      【讨论】:

        【解决方案3】:

        我们可以使用seq_along

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

        【讨论】:

          猜你喜欢
          • 2017-12-12
          • 2021-07-28
          • 2012-01-15
          • 1970-01-01
          • 2014-06-02
          • 1970-01-01
          • 1970-01-01
          • 2023-01-02
          • 2017-04-15
          相关资源
          最近更新 更多