在我的示例中,我想将两个向量合并为一个排序向量。为此我决定使用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
语句有关。
你能告诉我(或给我一个暗示)我错在哪里吗?
答案 0 :(得分:1)
您发布的代码不起作用(x
未定义)。我想这就是你想要的。只是一些小的变化:|
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) {
x <- min(new_vect)
sort_vect <- c(sort_vect, new_vect[which(x == new_vect)])
new_vect <- new_vect[ - which(x == new_vect)]
i <- i - 1
}
sort_vect
}