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