假设我有一个向量:
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)
好的,我得到了相同的结果,但它的可读性较差。你知道其他更干净的方法吗?
答案 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