2

長さが 50,000 を超えるスパース ベクトルを生成しています。forループで作成しています。ゼロを保存する効率的な方法があるのだろうか?

基本的にコードは次のようになります

score = c()
for (i in 1:length(someList)) {
score[i] = getScore(input[i], other_inputs)
if (score[i] == numeric(0))
score[i] = 0    ###I would want to do something about the zeros
}
4

1 に答える 1

1

このコードは機能しません。ループする前に、スコア ベクトルのサイズを事前に割り当てる必要があります。事前割り当てでも、ゼロを含むベクトルが作成されます。したがって、ゼロ値を割り当てる必要はありませんgetScore。関数からの数値結果のみを割り当てることができます。

N <- length(someList)  ## create a vector with zeros
score = vector('numeric',N)
for (i in 1:N) {
  ss <- getScore(input[i], other_inputs)
  if (length(ss)!=0)
    score[i] <- ss  
}
于 2013-06-18T19:33:04.443 に答える