2017-04-26 35 views
1

我有任務乘以向量中的數字,但只有那些可以除以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] < - X [X %% 3 == 0] * 3 – akrun

回答

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