创建新变量,它是许多其他变量的线性组合

时间:2015-06-05 18:24:09

标签: r dplyr

假设我有一个如下所示的数据框:

df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))

我想创建一个新的变量y,它是和alpha_i * V_i,其中i从1到50,其中alpha是从均匀分布(0,1)中抽取的随机数。

这样做的最佳方式是什么?我可以使用mutatedplyr吗?

1 个答案:

答案 0 :(得分:3)

你可以尝试

 df1$newvar <- as.matrix(df1) %*% v1

或者

 df1$newvar <- rowSums(sweep(df1, 2, v1, FUN='*'))

或者@Frank根据post

的建议
 df1$newvar <- Reduce(`+`,lapply(seq_along(v1),function(i)df1[[i]]*v1[i]))

数据

 set.seed(24)
 df1 <- as.data.frame(matrix( rnorm(100*50,mean=0,sd=1), 100, 50))
 set.seed(48)
 v1 <- runif(50)