所以今天我编写了一些我希望用0替换矩阵中所有负值的东西。调用这个矩阵B.这没问题,我刚写了
B[which(B<0)]=0
然而,仅仅因为我很好奇,我在想,如果我们摆脱了哪个并写了怎么办
B[B<0]=0
令我惊讶的是,这也得到了同样的答案。如果我在Stack Overflow上查找这个问题,第二个答案是非常标准的(还有更复杂的更快的方法),但我的问题是:上面的两个方法实际上是一样的吗? B <0返回布尔矩阵。哪种方法更快,为什么?
答案 0 :(得分:2)
是的,您可以使用逻辑向量进行索引。这里解释了:http://cran.r-project.org/doc/manuals/r-release/R-intro.html#Index-vectors
答案 1 :(得分:2)
关于速度问题,我尝试的测试似乎没有太大差异。例如,
B=.5-matrix(runif(10000),100,100)
start = Sys.time()
replicate(50000,B[B<0])
speed = Sys.time () - start
25.85秒
start = Sys.time()
replicate(50000,B[which(B<0)])
speed = Sys.time () - start
25.91秒