R:从数据帧计算范数

时间:2018-03-08 02:01:22

标签: r dataframe

我是这个数据框:

coef variable value
1        1    0e+00
2        1    1e-05
1        2    0e+00
2        2    2e-05

我试图根据列变量计算列的 L1 范数。因此,如果 variable = 1 ,我想计算值为0e + 00和1e-05 的范数。当变量= 2 时,我想计算值0e + 00和2e-05 的标准,等等......

所以结果应该是这样的:

coef variable value norm
1        1    0e+00 1e-05
2        1    1e-05 1e-05
1        2    0e+00 2e-05
2        2    2e-05 2e-05

这是我到目前为止所做的代码:

    #creating the data frame
       coef = c(1, 2, 1,2) 
        variable = c(1,1,2,2) 
        value = c(0e+00, 1e-05, 0e+00, 2e-05) 
        df = data.frame(coef, variable, value) 

    #this part is not working correctly because df$value is not a matrix
        for(k in 1:2){
          if(df$variable==1){
            df$norm=norm(df$value, type="1")
          }
        }

是否可以从数据帧值计算范数?

1 个答案:

答案 0 :(得分:1)

按照'变量'进行分组后,我们可以将matrix电话打包到'值'要转换为单个列matrix,并获取'规范',请在mutate

中创建该列
library(dplyr)
df %>% 
   group_by(variable) %>% 
   mutate(Norm = norm(matrix(value))) %>%
   as.data.frame
#  coef variable value  Norm
#1    1        1 0e+00 1e-05
#2    2        1 1e-05 1e-05
#3    1        2 0e+00 2e-05
#4    2        2 2e-05 2e-05