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