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計算,因此不可能做手工。任何想法都會很棒,謝謝!
強尼
我在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計算,因此不可能做手工。任何想法都會很棒,謝謝!
強尼
建議的一樣,你可以這樣做:
v1[as.logical(v1)] <- v2
但它具有覆蓋v1
的缺點。如果你不希望出現這種情況,你可以這樣做:
v3 <- replace(v1, as.logical(v1), v2)
或者這一個,這更是一個有點晦澀難懂:
v3 <- `[<-`(v1, as.logical(v1), v2)
我覺得沒有必要爲乘法,因爲V1是二進制。 'v1 [v1!= 0] < - v2'。或者更好@AnandaMahto評論說'v1 [v1 == 1] < - v2' – Arun
這很好,謝謝! –
但是,如果第二個向量的長度不等於1的數目,則「回收」工作。 – agstudy