Переназначить значения фрейма данных с помощью apply - PullRequest
0 голосов
/ 05 мая 2018

Я хотел бы использовать 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)
})

Я намерен получить фрейм данных тех же размеров, что и до замены, но это не так. Это оспаривает мое понимание того, как работает приложение.

спасибо.

...