R-单位向量
这可能是一个重复的问题,但可能我只是没有使用适当的关键字来找到我要找的 目前,如果我有一个向量R-单位向量,r,R,这可能是一个重复的问题,但可能我只是没有使用适当的关键字来找到我要找的 目前,如果我有一个向量x,如果我想要一个单位等价物,我会这样做 x_unit <- x/sum(x) x\u unit这里有一个小函数,可以满足您的要求: unit_vec <- function(vec){ return(vec/(sqrt(sum(vec**2,na.rm=TRUE)))) } 当总和也为0时,它也起作用 > vec2 [1] 10 -10 > unit_vec(
x
,如果我想要一个单位等价物,我会这样做
x_unit <- x/sum(x)
x\u unit这里有一个小函数,可以满足您的要求:
unit_vec <- function(vec){
return(vec/(sqrt(sum(vec**2,na.rm=TRUE))))
}
当总和也为0时,它也起作用
> vec2
[1] 10 -10
> unit_vec(vec2)
[1] 0.7071068 -0.7071068
!> sqrt(sum(unit_vec(vec2)**2,na.rm=TRUE))
[1] 1
我希望这能有所帮助。对于你的第二个问题,有x/sum(x,na.rm=TRUE)
。。。当sum(x)=0
时,您认为正确的答案应该是什么?我已经在为分母添加max语句等,它变得单调重复。当和为零时,它确实起作用,但它是一个不同于OP请求的缩放标准(它按L2范数/RMS而不是总和进行缩放…),您是对的。对不起,我误解了。如果按和进行缩放,我不确定除以0是否有意义。如果sum(vector)==0,我们可以在函数中添加一个stop。你觉得呢?很方便,我一直在研究非负数的数字。正因为如此,我可以做如下事情:x/ifelse(sum(x)=0,1,sum(x))
> vec2
[1] 10 -10
> unit_vec(vec2)
[1] 0.7071068 -0.7071068
!> sqrt(sum(unit_vec(vec2)**2,na.rm=TRUE))
[1] 1