我的任务是将向量中的数字相乘,但只有那些可以除以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)
答案 0 :(得分:0)
赋值运算符的lhs
和rhs
上的赋值向量不同。
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