how to calculate the Euclidean norm of a vector in R?

后端 未结 10 1097
灰色年华
灰色年华 2021-02-01 13:22

I tried norm, but I think it gives the wrong result. (the norm of c(1, 2, 3) is sqrt(1*1+2*2+3*3), but it returns 6..

10条回答
  •  一生所求
    2021-02-01 14:02

    If you have a data.frame or a data.table 'DT', and want to compute the Euclidian norm (norm 2) across each row, the apply function can be used.

    apply(X = DT, MARGIN = 1, FUN = norm, '2')
    

    Example:

    >DT 
    
            accx       accy       accz
     1: 9.576807 -0.1629486 -0.2587167
     2: 9.576807 -0.1722938 -0.2681506
     3: 9.576807 -0.1634264 -0.2681506
     4: 9.576807 -0.1545590 -0.2681506
     5: 9.576807 -0.1621254 -0.2681506
     6: 9.576807 -0.1723825 -0.2682434
     7: 9.576807 -0.1723825 -0.2728810
     8: 9.576807 -0.1723825 -0.2775187
    
    > apply(X = DT, MARGIN = 1, FUN = norm, '2')
     [1] 9.581687 9.582109 9.581954 9.581807 9.581932 9.582114 9.582245 9.582378
    

提交回复
热议问题