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

一定要用向量算法,如果用循环在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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容