R中将向量缩放为单位向量的最简单方法是什么?
例如,假设
>vec
[1] 1 0 2 1
和
>vec / sqrt(sum(vec^2))
[1] 0.4082483 0.0000000 0.8164966 0.4082483
它是其单位向量。
R语言中是否有一些内置函数可以实现此功能?
scalar1 <- function(x) {x / sqrt(sum(x^2))}
现在只需要使用:
> scalar1(vec)
[1] 0.4082483 0.0000000 0.8164966 0.4082483
x / sqrt(sum(x^2))
,但是您可以自己编写一个快速函数。我已编辑答案以反映这一点。这有帮助吗? - user4275591该 ppls
软件包包含函数 normalize.vector
,可以完全满足您的需求。然而,加载一个软件包似乎并不比自己输入函数的一行定义更简单...
自 2020-05-04 起,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)
我已经检查过在R 4.0.0中安装是有效的。然而,请注意,这并不能保证所有的函数都能正常工作,甚至不能保证它们会在未来的R版本中正常工作。
ppls
包在R版本4.0.0中不可用。 - Mehmet Yildiriminstall.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中安装可以正常工作,但这并不能保证所有功能都能正确运行。 - Stibu
scale()
可以执行sqrt(sum(x^2)/(n-1))
,但这并不完全是您要寻找的内容。 - Vorac