我有一个包含 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 个向量,长度不同,已排序。
我该如何解决这个问题?
感谢您的帮助。
感谢大家的帮助
我用下面的代码解决了我的代码:
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
}
}
}