data.framesのリストがあり、さまざまな重みを使用してそれらの列を操作したいと思います。
たとえば、2番目の列から最初の列を減算します(解決済み、以下を参照)。または、2番目の2倍から1番目と3番目を減算します(未解決)。
この質問に答えて得られた寛大な助けのおかげで、私はを使用して重みなしで2次元で問題の解決策を持っていますReduce
。
ウェイトを使って、そしてより高い次元で操作できる柔軟性が欲しいです。
私がこれまでに持っているのは:
priceList <- data.frame(aaa = rnorm(100, 100, 10), bbb = rnorm(100, 100, 10),
ccc = rnorm(100, 100, 10), ddd = rnorm(100, 100, 10),
eee = rnorm(100, 100, 10), fff = rnorm(100, 100, 10),
ggg = rnorm(100, 100, 10)
)
colDiff <- function(x)
{
Reduce('-', rev(x))
}
tradeLegsList <- combn(names(priceList), 3, function(x) priceList[x], simplify = FALSE)
tradeList <- lapply(tradeLegsList, colDiff)
私の知る限り、Reduce
複数の議論をするようには設計されていません。
私はこれを長い道のりで、そしていくつかのループで行うことができますが、それはRの方法の2* tradeLegsList[[1]]$bbb - tradeLegsList[[1]]$aaa - tradeLegsList[[1]]$ccc
ようには見えません。
重みベクトルを渡す方法はありますか?
w = c(-1, 2, -1)
理想的には、colDiff
(または)関数などの引数を渡しReduce
ます...または同様のものです。