首页 > 解决方案 > 从 R 中的数据矩阵中获取向量范数

问题描述

我正在尝试使用 R 来实现一些计算,以计算具有给定坐标的点的范数,然后取最大值,然后从中取出平方。

我尝试了以下方法:

a <- c(-0.5,1)
b <- c(-1,-1.5)
c <- c(-1.5,1.5)
d <- c(1.5,-0.5)
e <- c(0.5,-0.5)
df <- data.frame(a,b,c,d,e)

以更详细的方式,这就是我想要执行的操作:

任务

我尝试使用normand 使用,Frobenius但我想将所有内容放入一个函数中以供以后使用。因为当我为这些任务手动创建向量时,计算每个点变得太乏味了。寻找一种有效/更简单的方法来执行此操作。

标签: rfunction

解决方案


我们循环across列,得到元素的平方,sum它,用平方根返回,得到max并平方它

library(dplyr)
df %>%
   summarise(across(everything(), ~ sqrt(sum(.^2)))) %>% 
   max %>%
   .^2
#[1] 4.5

base R,我们可以使用

max(sqrt(colSums(df^2)))^2
#[1] 4.5

如果我们想要print使用所有数字,请指定digitsinprint

print(max(sqrt(colSums(df^2)))^2, digits = 16)
#[1] 4.499999999999999

推荐阅读