私は、サブセットに入れたい位置を表すvector<int> positions
と、サブセットにしたい2つのRcpp::NumericVector
ベクターA
とB
(どちらもvector<double>
とも扱うことができます)とします。 R
に私は sum(A[positions])
(double
)、またはA[positions]/B[positions]
(vector[double]
)と書くだろうかを計算するための最良の方法だろう何ベクトルのサブセットに関数を適用する最適な方法は何ですか?
? 基本的には、コピーを作成せずに特定の位置にあるベクトルの要素にアクセスしたいと思っていれば、その要素にアクセスしたいと思います(またはfor
ループ)。
例R
中:
positions = c(2,4,5) # just a vector with positions
A = rnorm(100) # a vector with 100 random numbers
B = rnorm(100)
mysum <- sum(A[positions])
mysmallvector <- A[positions]/B[positions] # or (A/B)[positions]
を今、私はちょうどpositions
のすべての値をループし、そして1によって位置一つのベクトルのサブセットが、私はよりエレガントな解決策があると考えて助けることができません。
は、forループできません回避:あなたはあなたのコレクションを反復処理する必要があります。これはRが背後で何をしているかでもあります。一方、より洗練されたAPIが必要な場合は、独自のクラスを作成するか、十分なC++マトリックスライブラリを使用する必要があります。 – OnMyLittleDuck