2016-10-19 5 views
1

私はモデルのセットを持っており、異なる推定レベルで各モデルの生存推定を生成する必要があります。私はまず、平均化するモデルを作成したいと思っています。2つのデータフレーム/行列のすべての行の間の要素ごとのベクトルの乗算

ここで、モデルセットは、列が特定のモデルで検出される可能性があります(または特定のモデルでは検出されない可能性がある)、行列は個々のモデルであり、セル値(1/0)は値をオンまたはオフにします。

modset <- structure(list(A = c(1, 1), B = c(1, 1), C = c(1, 1), D = c(1, 
1), E = c(0, 1), F = c(1, 0)), .Names = c("A", "B", "C", "D", 
"E", "F"), row.names = c(2L, 4L), class = "data.frame") 

私は各モデルを実行するのに必要な値を提供するマトリックスも作成しました。私が今行う必要がある何

estvals <- structure(list(int = c(1L, 1L, 1L, 1L), age = c(6L, 18L, 6L, 
18L), species = c(1L, 1L, 0L, 0L), Time = c(12L, 50L, 27L, 12L 
), height = c(90L, 90L, 90L, 90L), LastNew = c(7L, 7L, 21L, 21L 
)), .Names = c("int", "age", "species", "Time", "height", "LastNew" 
), row.names = c(1L, 11L, 16L, 20L), class = "data.frame") 

は、本質的にMODSETの各行によってestvalsの各行を乗算した結果である出力を作成することです。私は解決策を考え出すことができていない

outs <- structure(list(int = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), age = c(6L, 
6L, 18L, 18L, 6L, 6L, 18L, 18L), species = c(1L, 1L, 1L, 1L, 
0L, 0L, 0L, 0L), Time = c(12L, 12L, 50L, 50L, 27L, 27L, 12L, 
12L), height = c(0L, 90L, 0L, 90L, 0L, 90L, 0L, 90L), LastNew = c(7L, 
0L, 7L, 0L, 21L, 0L, 21L, 0L)), .Names = c("int", "age", "species", 
"Time", "height", "LastNew"), class = "data.frame", row.names = c(NA, 
-8L)) 

:私のサンプルで は、上記の、私は(各estvalレコードの2レコード)を8行をアウトになるだろう。私はapply()やsweep()で何かを設定しようとしましたが、私が求めていることをする関数を得ることはできません。

最終的に、私はモデル平均化後に適切な信頼区間を構築するためにSEに対して無条件の推定値を生成しています。したがって、上記の各エスケープは、最終的にグラフィカルに表示されるさまざまなシナリオでの生存予測を生成します。

答えて

2

私たちは、これはあなたが行列またはデータフレームを持っているかどうか動作します

n1 <- nrow(modset) 
n2 <- nrow(estvals) 
outs <- modset[rep(1:n1, times = n2), ] * estvals[rep(1:n2, each = n1), ] 

を使用することができます。 repを使用して生成したインデックスは、expand.gridでも取得できます。

+0

ありがとうございます!私はループのために物事をインデックス化するシンプルで直接的な方法がなければならないことを知っていたか、私が想像したオーバーレイを設定しました。これは完璧です。 –

関連する問題