我想使用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)
})
我打算获得与更换前相同尺寸的数据框,但事实并非如此。这是对我理解申请如何运作的挑战。
感谢。