【发布时间】:2016-03-16 18:18:24
【问题描述】:
在我的示例中,我想将两个向量合并为一个排序向量。为此,我决定使用 while 循环。这是我的代码:
merge_sort_func <- function(vect1,vect2){
if((is.numeric(vect1) & is.numeric(vect2)) == FALSE){
stop("The argument must be numeric!")
}
new_vect <- c(vect1,vect2)
sort_vect <- numeric()
i <- length(unique(new_vect))
while(i != 0){
sort_vect <- c(sort_vect,new_vect[which(x == min(new_vect))])
new_vect <- new_vect[-which(x == min(new_vect))]
i <- i-1
}
sort_vect
}
但在我的情况下它不起作用:
- 有时它对向量的排序错误(不按顺序)
- 有时会产生以下警告:
In min(new_vect) : no non-missing arguments to min; returning Inf
我认为,我的代码中的主要问题与while 语句有关。
你能告诉我(或给我提示)我哪里错了吗?
【问题讨论】:
-
什么阻止你使用 sort(new_vect)
-
现在我正在学习 R(loops) 的基础知识。所以现在我想构建没有 sort()、order() 等的程序。
-
学习任何语言的基本原则是不要重新发明轮子。排序是有充分理由的。
-
也可以说“学习语言的基本原则是边做边学”。还有“太阳底下没有新鲜事”。我看不出这种方法有什么问题。他没有尝试对向量进行排序。他正在尝试编写代码来对向量进行排序。有很大的不同。
标签: r while-loop