检索与R数据帧中的最小值对应的行

时间:2018-06-18 15:36:46

标签: r dataframe min

我得到了以下数据框

data <- structure(list(node_number = 1:8, 
                        x = c(2L, 80L, 36L, 57L, 33L, 76L, 77L, 94L 
                              ), 
                        y = c(62L, 25L, 88L, 23L, 17L, 43L, 85L, 6L 
                              ), 
                        node_demand = c(3L, 14L, 1L, 14L, 19L, 2L, 14L, 6L)), 
                   .Names = c("node_number", "x", "y", "node_demand"), 
                   class = "data.frame", row.names = c(NA, -8L))

  node_number  x  y node_demand

1           1  2 62           3
2           2 80 25          14
3           3 36 88           1
4           4 57 23          14
5           5 33 17          19
6           6 76 43           2
7           7 77 85          14
8           8 94  6           6

要拆分集线器和可用节点列表,请执行以下操作:

hubs <- data[keep <- sample(1:8, 1, replace = FALSE),]

client_nodes <- data[-keep, ]

我现在需要随机选择两个客户端节点

random_client_a <- client_nodes[seleccion <-sample(nrow(client_nodes), size = 1, replace = FALSE),]
random_client_b <-client_nodes[sample(nrow(client_nodes[-seleccion]), size = 1, replace = FALSE),]

使用以下公式(我需要最小化)计算集线器和客户端之间的距离:

euc.dist <- function(A, B){round(sqrt(sum((A - B) ^ 2)))}

a<-euc.dist(hubs,random_client_a)
b<-euc.dist(hubs,random_client_b)


min <- which.min(c(a,b))

由于which.min()返回索引位置...有什么办法可以检索对应于最小值的dataframe行?原因是我需要继续计算并向名为total_distance的变量添加距离,直到累计node_demand超过30。

过程如下:

  1. 选择节点集线器
  2. 选择两个随机节点客户端,计算其间的距离 集线器和每个客户端节点。
  3. 选择距离最小值的那个,将其添加到变量中 调用total_distance,然后添加node_demand对应 到该节点到名为total_demand的变量。
  4. 一旦total_demand&gt;停止循环30
  5. 有人可以帮我一把吗?

    非常感谢!

0 个答案:

没有答案