R:将beta的范数添加为列

时间:2018-03-04 22:47:33

标签: r matrix

我想在数据框 tmp 中添加一个名为 norm 的新列(其中包含的标准)。如果列variable==1计算value的范数,其中变量== 1 。如果列variable==2计算value的范数,其中变量== 2

以下是数据框:

      coef variable      value
1     1        1  0.9591502
2     2        1  5.3128176
3     3        1 12.4926498
4     4        1 17.7088466
5     5        1  4.7635561
6     1        2  7.8381375
7     2        2  6.0122541
8     3        2  9.2607897
9     4        2  6.7421873
10    5        2  4.2404777

到目前为止,这是代码:

   #generating some values
set.seed(19875)
n=10
p=30
real_p=15
x=matrix(rnorm(n*p), nrow=n, ncol=p)
y=as.matrix(apply(x[, 1:real_p], 1, sum) + rnorm(n))
beta=as.matrix(rep(0,ncol(x)))
n_iter=2
value1=matrix(0,30,n_iter)
value2=matrix(0,30,n_iter)

#the important part 
for(k in 1:n_iter){
  beta=matrix(rexp(beta, rate=.1), nrow = ncol(x))       #generating beta values 
  value1[,k]=beta                                        #storing beta to a matrix 30x1
  value2[,k]=norm(beta)                                  #storing norm as a matrix 30x1
  tmp <- as.data.frame(as.matrix(value1))
  tmp$coef <- row.names(tmp)                             #adding column coef
  tmp <- reshape::melt(tmp, id = "coef")                 #adding col variable and value
  tmp$variable <- as.numeric(gsub("V", "", tmp$variable))#removing V
}
tmp 

如果我添加一个名为 norm 的新列,其功能为融化tmp$norm=melt(value2, id="variable")我会得到一些 norm.X1 和< strong> norm.X2 我不需要的列。

  coef variable      value norm.X1 norm.X2 norm.value
1     1        1  0.9591502       1       1   331.9455
2     2        1  5.3128176       2       1   331.9455
3     3        1 12.4926498       3       1   331.9455
4     4        1 17.7088466       4       1   331.9455
5     5        1  4.7635561       5       1   331.9455

如何在未添加新列的情况下添加规范?

0 个答案:

没有答案