0

長さを変えずにベクトルに要素を追加したい。ベクトルには、各 for ループの後に 500 行 (1 列) のみを含める必要があります。これが私がこれまでに持っているものです。

# initialize the vector
values<- vector(mode = "integer", length= 500)

for (i in 1:500) {
values<-append(values, 2i, after = i-1)
}

したがって、valuesベクトルには次の要素が含まれている必要があります。2,4,6,8,10, ... 998, 1000

append 関数の問題は、ベクトルに要素を追加すると、ベクトルの長さが 1 だけ変わることです。そのため、for ループの最後では、valueベクトルの長さは 500 ではなく 1000 になり、要素: 2,4,6,8, ... , 998, 1000, 0,0,0 [followed by zeros]

私が期待する別のR関数はありますか、それとも上記のコードを修正する方法はありますか?

助けや提案に感謝します。

4

1 に答える 1

3

いくつかの問題

  • ベクトルには長さのみがあり、行と列はありません
  • 2 回 i は、あなた2iが探している r コードではありません。2*i2i0+2i
  • 関数を探しています`[`オブジェクトの一部を抽出または置換します)

2,4,6,...,998,1000もしそうなら、ベクトルを作成しようとしているだけですか

values <- seq(2,1000,by=2)

動作します。

appendが追加され、(R英語と同様に での定義により) オリジナルよりも長いベクトルが作成されます。

ループが意図したとおりに機能するために

# initialize a vector of 0's
values <- rep(0L, 500)

for (i in 1:500) {
  # replace the ith element with 2i
  values[i] <- 2*i
}

配列の場合

values <- array(rep(0L,500), dim = c(500,1))

 for (i in 1:500) {
  # replace the ith element in the first column with 2i
  values[i,1] <- 2*i
 }

?`[`ベクトル、リスト、配列、data.frames などの要素を抽出または置換する方法の詳細については、 を参照してください。

500行1列の行列が必要な場合2,4,6,8,...998,1000

values <- matrix(seq(2,1000,by=2), nrow = 500)
于 2012-10-15T22:13:08.257 に答える