我怎么能乘以具体数字向量使用R

问题描述:

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

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

你的RHS不相同的长度,即LHS'X [X %% 3 == 0] akrun

分配矢量不在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