假设我有一个如下所示的数据框:
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)中抽取的随机数。
这样做的最佳方式是什么?我可以使用mutate
和dplyr
吗?
答案 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)