R中的变量用于循环

时间:2012-11-09 22:11:03

标签: r for-loop

我在R中运行一个循环来查找向量的索引,当它的元素等于参考向量的元素时。

据我所知R,我需要在for循环之前声明变量,但在这种情况下我不知道我的索引向量的最终长度(见下面的代码)。 如何创建允许R在for循环期间更改其大小的变量?

我的代码摘录:

k <- 1
for(i in 1:length(Lid.time)){
  ind <- which(Net.time==Lid.time[i])
  if(length(ind)>0){
    ind.Net[k] <- ind
    k <- k+1
  }
}

关于代码的说明: Lid.time是一个与Net.time不同的长度的向量。 我需要找到一个索引数组,告诉我Net.time在哪里等于Lid.time。我事先不知道ind.Net向量会有多长,所以如何声明向量ind.Net?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

不需要循环,因为它听起来像match做你想要的。

a <- 1:10
b <- c(2, 7, 9)
match(a, b)
# [1] NA  1 NA NA NA NA  2 NA  3 NA

答案 1 :(得分:2)

正如Dason所说,match可以很好地完成这项具体任务:

>a <- seq(2,20,2)
   #[1]  2  4  6  8 10 12 14 16 18 20
>b <- c(4,14,18)
>match(b,a)
   #[1] 2 7 9  # The indices!
>a %in% b #shorthand logical version of match
   #[1] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE

但要回答一个循环中未知长度的矢量问题:

Vector <- c()
for(i in sample(1:100,20)) {
    if(i<50) {Vector <- append(Vector, i)}
    }
length(HowLongIsThisVector)

由于sample每次运行它都会有所不同。