返回一个向量各元素在另外一个向量中的位置

一定要用向量算法,如果用循环在r语言中奇慢无比

比如我们可以用match函数:

first = c("a","c","b")

second = c("c","b","a")

match(second, first)

[1]231

举个例子,

for (i in 1:length(Spring$日期)) {
  for (j in 1:length(data$年)) {
           if(data[j,5] == Spring[i,1]){
                 data[j, 10] <- Spring[i,2]
                 data[j, 11] <- Spring[i,3]
                 next
             }
      }
}

这一段代码能慢的让你怀疑人生,估计得20分钟才好。
而实现类似的功能,下面这个一秒都用不了:

d <- character(length(data$年))
t <- match(Spring$日期, data$日期)
r <- Spring$黑虎泉
m <- which(is.na(t) == 0)
t <- t[which(is.na(t) == 0)]
d[t] <- r[m]

总而言之,不要用for不要用for不要用for

你可能感兴趣的:(返回一个向量各元素在另外一个向量中的位置)