R 若要将0列为0,请将函数应用于具有特定值的向量元素?

R 若要将0列为0,请将函数应用于具有特定值的向量元素?,r,rank,R,Rank,我想用rank()函数对向量进行排序。 但是,我需要=0的值来返回=0的排名,然后对于值最低的元素,排名继续保持在1 例如: a<-c(0, 0:5, 0) rank(a, ties.method="first") 所需的输出如下所示: [1] 0 0 1 2 3 4 5 0 我想象这个解决方案看起来像是只对向量(a)中(没有)值为0的元素应用排序函数。我们可以对不包含0值的元素进行排序,并用新的排序向量替换向量中相应元素中的值 a1 <- a a1[a1!=0] <-

我想用rank()函数对向量进行排序。 但是,我需要=0的值来返回=0的排名,然后对于值最低的元素,排名继续保持在1

例如:

a<-c(0, 0:5, 0)
rank(a, ties.method="first")
所需的输出如下所示:

[1] 0 0 1 2 3 4 5 0

我想象这个解决方案看起来像是只对向量(a)中(没有)值为0的元素应用排序函数。我们可以对不包含0值的元素进行排序,并用新的
排序
向量替换向量中相应元素中的值

 a1 <- a
 a1[a1!=0] <- rank(a1[a1!=0])
 a1

也可能是
dplyr::densite_rank(a)-1
,不过这假设向量中有零。这个答案给出了所需的输出:
[1]01 2 3 4 5 0
 a1 <- a
 a1[a1!=0] <- rank(a1[a1!=0])
 a1
replace(a, a!=0, rank(a[a!=0]))