私はStackOverflowの以前の質問を見てきましたが、私が抱えている問題に対応できる解決策が見つかりませんでした。あなたがここにそれを必要とすべきであるデータフレームの値を配列のインデックスとして使用する
source destination year ship count
1 1415 1 6 0
1 1415 2 6 0
1 1415 3 6 0
1 1415 4 6 0
1 1415 5 6 0
1 1415 6 6 0
コピー可能コード:
df <- structure(list(source = c(1L, 1L, 1L, 1L, 1L, 1L), destination =
c(1415, 1415, 1415, 1415, 1415, 1415), year = 1:6, ship = c(6,
6, 6, 6, 6, 6), count = c(0, 0, 0, 0, 0, 0)), .Names = c("source",
"destination", "year", "ship", "count"), class = "data.frame",
row.names = c(NA, 6L))
私も4次元配列を持っている
基本的に、私はデータフレームを持って、私たちはこのように見えることdf
と呼ぶことにしますm1
に電話します。基本的に、df
の最初の4つの列のそれぞれは、m1
の4つの次元 - 基本的にインデックスに対応しています。おそらく今のところ推測できる通り、df
の5番目の列は実際にm1
に格納されている値に対応しています。例えば、df$count[3] <- m1[1,1415,3,6]
。
現在のところ、count
の列全体は空で、私はそれを記入したいと思います。小さな仕事だった場合、私はそれをゆっくりと愚かなやり方で行い、for-loopを使用しますが、問題は、df
に約300,000,000行があり、m1
のサイズは約3900 x 3900 x 35 x 7です。結果として、1日の実行後の次のアプローチは、行の5%しか得られませんでした。
for(line in 1:nrow(df)){
print(line/nrow(backcastdf))
df$count[line] <- m1[df$source[line], df$destination[line], df$year[line], df$ship[line]]
}
これをより速く行う方法に関するアイデアはありますか?
はたぶん、あなたは' purrrを使用することができますか? – Jeremy
私は 'purrr'パッケージに慣れていないので、私はそれを調べて、あなたに連絡しなければなりません。 –