Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays R中数组的排序列表_Arrays_R_Sorting - Fatal编程技术网

Arrays R中数组的排序列表

Arrays R中数组的排序列表,arrays,r,sorting,Arrays,R,Sorting,我有一个数组列表,我想选择最好的数组,最好的意思是,数组中所有值之和最小的数组 v1 = c(5,5,5,5) v2 = c(6,6,6,6) v3 = c(7,7,7,7) v4 = c(8,8,8,8) v5 = c(1,1,1,1) v6 = c(2,2,2,2) v7 = c(3,3,3,3) v8 = c(4,4,4,4) arr1 = array(c(v1,v2,v3,v4), dim = c(4,4)) arr2 = array(c(v5,v6,v7,v8), dim = c(4,

我有一个数组列表,我想选择最好的数组,最好的意思是,数组中所有值之和最小的数组

v1 = c(5,5,5,5)
v2 = c(6,6,6,6)
v3 = c(7,7,7,7)
v4 = c(8,8,8,8)
v5 = c(1,1,1,1)
v6 = c(2,2,2,2)
v7 = c(3,3,3,3)
v8 = c(4,4,4,4)
arr1 = array(c(v1,v2,v3,v4), dim = c(4,4))
arr2 = array(c(v5,v6,v7,v8), dim = c(4,4))
myList = list(arr1,arr2)
有什么功能可以做到这一点吗? 我需要这样一个循环:

solve <- function() {
  A <- myList
  while(length(A) != 0) {
    X <- pickBestFrom(A)
    if(isSolution(X)){
      return(X)
      break
    }
    Y <- neighbors(X)
    A <- append(A,Y)
    A <- unique(A)
  }
}

您认为最好是从我的列表中找到每个时间最佳值,还是先对列表排序,然后选择第一个元素?

如果我上面的评论是正确的,即您需要一个pickBestFrom函数,那么这里有两个备选方案,用代码对它们进行计时

首先对总和进行排序,然后选择最小的列表成员。 第二个选择较小的和,使用which.min和更快

pickBestFrom1 <- function(X){
    X[[ order(sapply(X, sum))[1] ]]
}

pickBestFrom2 <- function(X){
    X[[which.min(sapply(X, sum))]]
}

microbenchmark::microbenchmark(
    order = pickBestFrom1(myList),
    which.m = pickBestFrom2(myList),
    times = 1e3
)

那么,如果我正确理解了这个问题,您需要一个pickBestFrom函数吗?
list2 <- lapply(1:1000, function(i) array(rnorm(16), dim = c(4, 4)))

microbenchmark::microbenchmark(
    order = pickBestFrom1(list2),
    which.m = pickBestFrom2(list2),
    times = 1e3
)