Я хотел бы использовать apply для переназначения значений в матрице или фрейме данных. в частности, я пытаюсь заменить отрицательные значения в каждой строке теми же значениями, нормализованными по сумме отрицательных значений в строке.
Я пытаюсь заменить положительные значения таким же образом.
Создать данные
init <- runif(length(n), min = -1, max = 1)
init[which(init < 0)] <- init[which(init < 0)]/-sum(init[which(init < 0)])
init[which(init > 0)] <- init[which(init > 0)]/sum(init[which(init > 0)])
sd = c(.16, .18, .05,.07,.23,.26,.01)/sqrt(365)
increment <- sapply(sd, function(x) rnorm(10, mean = 0, sd = x)) * runif(length(n), min = -1, max = 1)
Создать фрейм данных
series <- data.frame(apply(increment + 1, 2, function(x) cumprod(x)) * init)
Переназначить значения в каждой строке
series <- apply(series, 1, function(x) {
x[which(x < 0)] <- x[which(x < 0)]/-sum(x[which(x < 0)])
x[which(x > 0)] <- x[which(x > 0)]/sum(x[which(x > 0)])
return(x)
})
Я намерен получить фрейм данных тех же размеров, что и до замены, но это не так. Это оспаривает мое понимание того, как работает приложение.
спасибо.