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

问题描述 投票:7回答:2

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

例如,假设

>vec
[1] 1 0 2 1

>vec / sqrt(sum(vec^2)) 
[1] 0.4082483 0.0000000 0.8164966 0.4082483

是其单位向量。

R中为此有一些内置函数吗?

r vector scaling
2个回答
10
投票

您可以使自己成为一个函数:

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

现在只需使用:

> scalar1(vec)
[1] 0.4082483 0.0000000 0.8164966 0.4082483

3
投票

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的未来版本中都能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.