2013-07-14 78 views
1

我在R中有2個不同的向量。第一個入口只有0或1.第二個向量的長度等於第一個向量中1的個數。我想要一個輸出是第一個向量,但1的替換爲第三個向量的輸入。例如。不同長度的R中的乘法向量

v1<-c(1,0,0,1,1) 
v2<-c(2,3,4) 

我想:

v3<-c(2,0,0,3,4) 

V1的長度將是10在我的劇本,我有超過1000計算,因此不可能做手工。任何想法都會很棒,謝謝!

強尼

+1

我覺得沒有必要爲乘法,因爲V1是二進制。 'v1 [v1!= 0] < - v2'。或者更好@AnandaMahto評論說'v1 [v1 == 1] < - v2' – Arun

+0

這很好,謝謝! –

+0

但是,如果第二個向量的長度不等於1的數目,則「回收」工作。 – agstudy

回答

0

建議的一樣,你可以這樣做:

v1[as.logical(v1)] <- v2 

但它具有覆蓋v1的缺點。如果你不希望出現這種情況,你可以這樣做:

v3 <- replace(v1, as.logical(v1), v2) 

或者這一個,這更是一個有點晦澀難懂:

v3 <- `[<-`(v1, as.logical(v1), v2)