在R中,什么';将一个向量缩放为单位向量的最简单方法是什么?

在R中,什么';将一个向量缩放为单位向量的最简单方法是什么?,r,vector,scaling,R,Vector,Scaling,在R中,将向量缩放为单位向量的最简单方法是什么 例如,假设 >vec [1] 1 0 2 1 及 是它的单位向量 R中是否有一些内置函数用于此功能?您可以自己创建一个函数: scalar1 <- function(x) {x / sqrt(sum(x^2))} ppls包包含函数normalize.vector,该函数完全满足您的需要。然而,加载包似乎并不比自己输入函数的单行定义简单多少 自2020年5月4日起,ppls已在CRAN上退役,因此它不能再与install.packa

在R中,将向量缩放为单位向量的最简单方法是什么

例如,假设

>vec
[1] 1 0 2 1

是它的单位向量


R中是否有一些内置函数用于此功能?

您可以自己创建一个函数:

scalar1 <- function(x) {x / sqrt(sum(x^2))}

ppls
包包含函数
normalize.vector
,该函数完全满足您的需要。然而,加载包似乎并不比自己输入函数的单行定义简单多少

自2020年5月4日起,
ppls
已在CRAN上退役,因此它不能再与
install.packages(“ppls”)
一起安装。仍然可以使用安装最新版本

install.packages("https://cran.r-project.org/src/contrib/Archive/ppls/ppls_1.6-1.1.tar.gz", repos = NULL)

我已经检查了R4.0.0中的安装工作。但是,请注意,这并不保证所有功能都能正常工作,更不用说它们在R的未来版本中能正常工作。

0.4082483未知,必须从vec计算。我的意思是,如果在R中有一个内置函数来实现这一点。例如,根据我的理解,如果有一个aaa,其中aaa(vec,…)=c(0.4082483,0.0000000,0.8164966,0.4082483),那么就没有内置函数可以执行
x/sqrt(sum(x^2))
,但您可以创建自己的快速函数。我编辑了答案以反映这一点。这有用吗?谢谢你。我也知道这是一种方法,只是想知道在R中可能有一个内置函数用于我没有找到的这种常见计算。R在矩阵代数功能上似乎仍然很弱基本函数
scale()
可以做
sqrt(sum(x^2)/(n-1))
,但这并不是你想要的。不幸的是,
ppls
软件包不适用于R版本4.0.0。是的,你说得对。该软件包已于2020年5月14日存档:任何人如何使用它?它是否适用于R以前的版本?这里的问题不是该包不适用于R 4.0.0,而是它已在CRAN上存档。您不能在任何版本的R中使用
install.packages(“ppls”)
安装它。但是,您仍然可以使用
install.packages(“install.packages”)安装程序包https://cran.r-project.org/src/contrib/Archive/ppls/ppls_1.6-1.1.tar.gz,repos=NULL)
。我已检查安装是否在R 4.0.0中工作,但这并不保证所有功能都能正常工作。
> scalar1(vec)
[1] 0.4082483 0.0000000 0.8164966 0.4082483
install.packages("https://cran.r-project.org/src/contrib/Archive/ppls/ppls_1.6-1.1.tar.gz", repos = NULL)