使用apply重新分配数据框值

时间:2018-05-04 21:51:54

标签: r dataframe apply assign

我想使用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)
})

我打算获得与更换前相同尺寸的数据框,但事实并非如此。这是对我理解申请如何运作的挑战。

感谢。

0 个答案:

没有答案