2016-05-18 61 views
0

假設我有一個矢量:如何用函數根據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) 

好的,我得到了相同的結果,但它的可讀性較差。你知道其他更清潔的方式嗎?

回答

1

有大量的方法來處理這個。其中一個典型的方法使用seq

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

可以完成@使用​​洛倫佐,羅西的方法:

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

​​,這是比更靈活seq功能更快。

1

只需創建一個新的載體,然後用一個量化的總和:

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

我們可以使用seq_along

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