Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 - Fatal编程技术网

从R中的两个向量中,找出第二个向量中的最小值大于第一个向量中的每个值

从R中的两个向量中,找出第二个向量中的最小值大于第一个向量中的每个值,r,R,在R中有两个向量: > x <- c(323, 344, 383, 404, 428, 444, 1447, 1466, 1492, 1512) > y <- c(329, 389, 1453, 1465, 1498, 1511) 我尝试过子集,比如: > x_data_frame <- data.frame(a = x) #create the frame > x_data_frame$b <- min(y[y > x]) #calcul

在R中有两个向量:

> x <- c(323, 344, 383, 404, 428, 444, 1447, 1466, 1492, 1512)
> y <- c(329, 389, 1453, 1465, 1498, 1511)
我尝试过子集,比如:

> x_data_frame <- data.frame(a = x) #create the frame
> x_data_frame$b <- min(y[y > x]) #calculation
>x_数据_帧x_数据_帧$bx])计算

但当然,这是行不通的。有什么想法吗?

您可以循环通过
x
并根据您的情况构造一个向量:

data.frame(x, y = sapply(x, function(i) dplyr::na_if(min(y[y>i]), Inf)))

#      x    y
#1   323  329
#2   344  389
#3   383  389
#4   404 1453
#5   428 1453
#6   444 1453
#7  1447 1453
#8  1466 1498
#9  1492 1498
#10 1512   NA

使用
dplyr
中的
na\u if()
函数将
Inf
值替换为
na
,如果
Inf
值适合您的分析,您可以忽略它。

请参阅
findInterval
<代码>y[findInterval(x,y)+1L]
data.frame(x, y = sapply(x, function(i) dplyr::na_if(min(y[y>i]), Inf)))

#      x    y
#1   323  329
#2   344  389
#3   383  389
#4   404 1453
#5   428 1453
#6   444 1453
#7  1447 1453
#8  1466 1498
#9  1492 1498
#10 1512   NA