我有一个非常庞大的2d阵列,大约有3600 x 3600个元素。我想用新值替换大多数元素,但我尝试的一切都太慢了。这是一个例子:
m <- array(NA,c(1000,1000))
x <- sample(1:1000,500000,replace=T)
y <- sample(1:1000,500000,replace=T)
v <- sample(1:10,500000,replace=T)
m[x,y] <- v
我发现数据框的类似问题,但我无法将此应用于我的案例。如果有人能给我一个更快的解决方案,我将非常感激。
答案 0 :(得分:2)
As&#39; x&#39;并且&#39; y&#39;是行/列索引,选项是cbind
它一起提取&#39; m&#39;在该位置并将其分配给&#39; v&#39;中的值。它会更快。根据提供的示例,
system.time(m[cbind(x,y)] <- v)
# user system elapsed
# 0.01 0.00 0.01
当我们这样做时,
m[x, y]
获取的行和列对应于所有x和y&#39; s这将是一个尺寸为500000 X 500000的巨大矩阵,并且需要花费大量时间才能加载同样也是不正确的