将函数应用于向量中的每个第n个元素

时间:2017-11-29 10:09:10

标签: r vector

我在R中有一个向量:

> v <- c(5, 10, 15, 20, 25, 30, 35, 40, 45, 50)

我想将一个函数应用于向量的每个第n个元素,并让它返回新的向量。例如,假设我想将向量的每个第三个元素乘以2.然后我会得到

> v
[1] 5 10 30 20 25 60 35 40 90 50

我设法使用矢量逻辑提取元素:

> v[c(rep(FALSE,2),TRUE)]
[1] 15 30 45

意思是我已经想出了如何访问这些元素,并且我能够为他们做些事情,但我不知道如何让他们回到我的原始向量v

3 个答案:

答案 0 :(得分:7)

我们需要分配

v[c(FALSE, FALSE, TRUE)] <- v[c(FALSE, FALSE, TRUE)]*2

答案 1 :(得分:5)

另一种选择是使用seq。您可以随意指定nseq将在n开始按n开始,直到您的向量结束(length(v))。

n <- 3
v[seq(n, length(v), n)] <- v[seq(n, length(v), n)]*2

> v
 [1]  5 10 30 20 25 60 35 40 90 50

答案 2 :(得分:5)

使用ifelse的解决方案:

ifelse(1:length(v) %% 3 == 0, v * 2, v)
# [1]  5 10 30 20 25 60 35 40 90 50