1

これはしばらくの間私を悩ませてきました。ループを使用する必要がある/使用したいとします。

ループを書き、番号 2 から開始したい場合は、次のようにします。

for (i in 2:length(variable1) { ... }

次のような値を割り当てようとすると、問題が発生します。

variable2 <- 1:length(variable1)
for (i in 2:length(variable1) {
    variable2[i] <- sample(variable1, 1)  # silly example; ignore it content-wise
}

ここで、より小さいベクトルを初期化したとしても、最初の位置に「1」があるため、取得された variable2 で問題が発生することがよくあります。より高い数値から開始したい場合に for ループを処理する最も簡単な方法は何ですか? i <- i+iまた、1 から length(variable1) マイナス 1 まで実行する必要があるため、を使用するよりも良い方法はありますか? 簡単な解決策がありませんか?

私はそれに取り組んでいますが、forループの前に変数を事前定義する最良の方法は何ですか? variable2 <- 1:length(variable1)variable2 が長さ の変数であることがわかっている場合、私は通常、 を使用しますvariable1。これはメモリを割り当てる最速の方法ですか?

編集:私は今、それが最も簡単かもしれないことに気付きました:

variable2 <- 2:length(variable1)
for (i in 2:length(variable1) {
    variable2[i-1]
}

しかし、私はまだより良い提案を求めています。

4

3 に答える 3

2

通常の R のイディオムは、おそらく使用sapplyして、結果ベクトルを埋める簿記を処理させることでしょう。このようなもの:

> sapply(2:5, function(x) {x*10})
[1] 20 30 40 50
于 2013-05-02T20:46:05.143 に答える