如何使用R

时间:2017-04-26 18:10:18

标签: r

我的任务是将向量中的数字相乘,但只有那些可以除以3模0的数字。我想出了如何用不同的数字替换向量中的某些元素,但只有当我用某个数字替换它才有效。我无法在此http://www.r-tutor.com/r-introduction/vector或甚至在此网站上找到任何答案。每个人只将值提取到另一个向量。

x <- c(1,1,2,2,2,3,3)
x[x%%2==0] = 5
# [1] 1 1 5 5 5 3 3

为什么这不起作用?

x[x%%3==0] = x*3

我希望得到这个:

c(1,1,5,5,5,9,9)

1 个答案:

答案 0 :(得分:0)

赋值运算符的lhsrhs上的赋值向量不同。

length(x*3)
#[1] 7

length(x[x%%3 ==0])
#[1] 2

我们需要做

x[x%%3==0] <- x[x%%3==0]*3
x
#[1] 1 1 5 5 5 9 9

可以创建一个对象,然后进行替换

,而不是重复逻辑向量
i1 <- x%%3 == 0
x[i1] <- x[i1]*3

在第一个赋值中,只有一个元素,并且它被指定用于替换符合逻辑条件返回的值

另一种选择是

pmax(x, x*(!x%%3)*3)
#[1] 1 1 5 5 5 9 9