2013-07-14 5 views
1

저는 R에 2 개의 다른 벡터가 있습니다. 첫 번째 엔트리는 0 또는 1뿐입니다. 두 번째 벡터의 길이는 첫 번째 벡터의 1의 수와 같습니다. 첫 번째 벡터 인 출력을 원하지만 1은 세 번째 벡터의 입력으로 바뀝니다. 예 : V1의길이가 다른 R의 벡터 곱하기

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

길이 내 스크립트에 10 될 것이며 나는 그것을 수동으로 할 수 없습니다 때문에 계산하기 위해 1000 있습니다

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

나는 원한다. 어떤 아이디어라도 좋을 것입니다. 감사합니다!

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

을하지만 v1 덮어 쓰기의 단점이있다 : 같이 제안

조니

+1

합니다. 'v1 [v1! = 0] <- v2'. 또는 @AnandaMahto가 'v1 [v1 == 1] <- v2'로 댓글을 달았습니다. – Arun

+0

잘 작동합니다. 감사합니다! –

+0

그러나 '재활용'은 두 번째 벡터의 길이가 1의 수와 같지 않으면 작동합니다. – agstudy

답변

0

, 당신은 할 수 있습니다. 당신이 원하지 않는 경우, 당신은 할 수 있습니다 : 좀 더 불분명

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

또는이 하나 : 나는 V1은 바이너리이기 때문에 곱셈에 대한 필요가 없습니다 생각

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