次のコードを使用して、次の data.tables px & vol を設定しようとしています。(遅い for ループに戻ります)
a=data.table(
date_id = rep(seq(as.Date('2013-01-01'),as.Date('2013-04-10'),'days'),5),
px =rnorm(500,mean=50,sd=5),
vol=rnorm(500,mean=500000,sd=150000),
id=rep(letters[1:5],each=100)
)
b=data.table(
date_id=rep(seq(as.Date('2013-01-01'),length.out=600,by='days'),5),
id=rep(letters[1:5],each=600),
px=NA_real_,
vol=NA_real_
)
setkeyv(a,c('date_id','id'))
setkeyv(b,c('date_id','id'))
次のアプローチは機能しません。
s = a[1,id]
d = a[1,date_id]
b[id == s & date_id == d, list(names(b)[3:4])] <- a[id == s & date_id ==d, list(names(a)[2:3])]
次のコードで失敗します
Error in `[<-.data.table`(`*tmp*`, id == s & date_id == d, list(names(b)[3:4]), :
j must be atomic vector, see ?is.atomic
私は何を間違っていますか、そしてそれらの値を1つのdata.tableから他の要素ごとに設定するにはどうすればよいですか? 実際のテーブルにはかなりの数の列があるため、それらを手で書き出すことは私にとってオプションではありません。
ありがとう