将向量中的奇数相乘

时间:2019-01-28 02:45:44

标签: r

我是R语言的初学者,需要将以下向量的奇数(两个)相乘:

x<-c(1:20)

我尝试过: x2<-c[lapply(x,"%%",2*2)==1]

但是出了点问题。

3 个答案:

答案 0 :(得分:3)

对于像您的示例一样的由连续整数组成的矢量,我们可以使用循环

x * c(2,1)
##[1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20

更一般地说,我们可以做到

x * (x%%2 + 1L)

答案 1 :(得分:2)

使用基数r,我们可以尝试

ifelse(x %% 2 != 0, x * 2, x)
> [1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20

答案 2 :(得分:2)

我们可以找到奇数的索引并将它们乘以2。

inds <- as.logical(x %% 2)
x[inds] <- x[inds] * 2
x
#[1]  2  2  6  4 10  6 14  8 18 10 22 12 26 14 30 16 34 18 38 20