我在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
。
答案 0 :(得分:7)
我们需要分配
v[c(FALSE, FALSE, TRUE)] <- v[c(FALSE, FALSE, TRUE)]*2
答案 1 :(得分:5)
另一种选择是使用seq
。您可以随意指定n
,seq
将在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