1
私は、データフレームから5行のグループをとり、それを関数に渡すforループを作成しました。そして関数は、これらの5つの行に対していくつかの操作を行った後にただ1つの行を返します。コードは以下の通りです:FORループの代わりに
for (i in 1:nrow(features_data1)){
if (i - start == 4){
group = features_data1[start:i,]
group <- as.data.frame(group)
start <- i+1
sub_data = feature_calculation(group)
final_data = rbind(final_data,sub_data)
}
}
誰かが私にこの代替案を提案してください。forループは時間がかかります。関数feature_calculationは膨大です。
最初にグループを含むベクタを作成してみましょう(ヒント: 'rep(1:ngroups、each = 5)') 'tapply'を見てください –
forループの速度は、おそらくあなたを抱きしめていません。 'feature_calculation()'関数を最適化し、ループの前に 'final_data'を割り当てるのではなく、オブジェクト全体をコピーするようにしてください。 – Miff