选择列表中向量的元素

问题描述 投票:0回答:1

我有一个包含 3 个(或更多)字符向量的列表,按元素总数排序 第一个向量有 18 个元素 第二个向量有 623 个元素 第三个向量有 1706 个元素

我想随机选择 256 个元素,而不是重复地以有序方式获取这 256 个元素。向量中元素较少的一个元素,之后是第二个向量元素较少的另一个元素,依此类推,直到选出256个元素。我该怎么做?

到目前为止我的代码是:

selected_files <- c()

for(i in files_train) {
  
  selected_files <- c(selected_files, sample(files_train, 1, replace = F))
  
  if(sum(sapply(selected_files, length)) == 256) {
    
    break
    
  }
}

files_train 是我的列表,在本例中为 3 个向量,长度不同,已排序。

我该如何解决这个问题?

感谢您的帮助。

r list for-loop if-statement sample
1个回答
0
投票

感谢大家的帮助

我用下面的代码解决了我的代码:

selected_files <- list()

while(sum(unlist(lapply(selected_files, length))) < 256) {
  for(i in names(files_train)[order(sapply(files_train, length), decreasing = F)]) {
    
    files <- setdiff(files_train[[i]], selected_files[[i]])
    
    if(length(files) >= 1) {
      selected_files[[i]] <- c(selected_files[[i]], sample(files, 1))
    }
    
    if(sum(sapply(selected_files, length)) >= 256) {
      cat(sum(sapply(selected_files, length)))
      break
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.