0

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を宣言するにはどうすればよいですか?

ご協力いただきありがとうございます

4

2 に答える 2

2

Dasonmatchが述べたように、その特定のタスクには問題なく機能します。

>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

于 2012-11-09T22:26:34.100 に答える
2

それはあなたが望むことをするように聞こえるので、ループの必要はありませんmatch

a <- 1:10
b <- c(2, 7, 9)
match(a, b)
# [1] NA  1 NA NA NA NA  2 NA  3 NA
于 2012-11-09T22:14:15.650 に答える