Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:优化依赖于其他向量的索引级比较_R_Vector - Fatal编程技术网

R:优化依赖于其他向量的索引级比较

R:优化依赖于其他向量的索引级比较,r,vector,R,Vector,我有四个向量 x, y, z, w length(x) = length(y) = length(z) = length(w) = 5000 我想做以下几点: 取向量“w”并遍历从1到5000的每个索引“i”。对于每个索引“i”,在“x”中找到最接近y[i]的索引“j”。然后,取那个索引'j',比较所有i和ji的w[i]>z[j]。。。。ji的意思是j依赖于I 我只想知道这是不是真的,我不想计算对应的is和js 我使用for循环拟合了此过程,并使用which.min查找索引“j”。这很慢。如何

我有四个向量

x, y, z, w
length(x) = length(y) = length(z) = length(w) = 5000
我想做以下几点:

取向量“w”并遍历从1到5000的每个索引“i”。对于每个索引“i”,在“x”中找到最接近y[i]的索引“j”。然后,取那个索引'j',比较所有i和ji的w[i]>z[j]。。。。ji的意思是j依赖于I

我只想知道这是不是真的,我不想计算对应的is和js

我使用for循环拟合了此过程,并使用which.min查找索引“j”。这很慢。如何优化

例如:

z <- c(1,2,3,4,5)
w <- c(2,3,2,5,5)
x <- c(200,300,400,500,600)
y <- c(300,300,200,500,600)
我的解决方案计算了j,并进行了所有的比较

all(w > z[apply(abs(outer(x, y, `-`)), 2, which.min)])
这取决于你需要什么。在我的机器上,在一个具有5000个x值的示例上运行这个过程只需不到一秒钟

system.time(
     all(w > z[apply(abs(outer(x, y, `-`)), 2, which.min)]))
            user           system          elapsed 
0.77000000000000 0.20000000000000 0.97000000000116 
all(w > z[apply(abs(outer(x, y, `-`)), 2, which.min)])
system.time(
     all(w > z[apply(abs(outer(x, y, `-`)), 2, which.min)]))
            user           system          elapsed 
0.77000000000000 0.20000000000000 0.97000000000116