다양한 가중치를 사용하여 data.frames 목록을 보유하고 있으며 해당 열을 조작하고 싶습니다.Reduce에 여러 인수 전달
예를 들어 두 번째 열에서 첫 번째 열을 뺍니다 (해결됨, 아래 참조). 또는 두 번째 두 번째 (미해결)에서 첫 번째와 세 번째를 뺍니다.
this 질문에 대한 응답으로 얻은 관대 한 도움 덕분에, Reduce
을 사용하여 2 차원에서 문제없이 문제를 해결할 수 있습니다.
나는 가중치로 그리고 더 높은 차원에서 작동 할 수있는 유연성을 원합니다.
내가 지금까지있는 것은 :
내가 무엇을 말할 수에서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
여러 인수를 사용하도록 설계되지 않았습니다.
2* tradeLegsList[[1]]$bbb - tradeLegsList[[1]]$aaa - tradeLegsList[[1]]$ccc
으로 길게 할 수 있지만 일부 루프는 수행 할 수 있지만은 처럼 보이지 않습니다.
가중치 벡터를 전달하는 방법이 있습니까?
이상적으로는 w = c(-1, 2, -1)
과 같은 인수를 colDiff
(또는 Reduce
) 함수 또는 이와 비슷한 함수에 전달하는 것이 좋습니다.
있을 때 데이터를 3D 배열에 저장하는 것이 좋습니다. 그러면 당신이하려고하는 것은'% * %'(행렬 곱셈)과 아마도'aperm'을 가진 한 줄짜리 행렬에서 할 수 있습니다. – flodel
그렇습니다. 데이터 준비가 완료된 모습입니다. 고마워, 내가 조사 할거야. – ricardo