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