Comment inverser l'ordre d'un vecteur?
supposons que j'ai un vecteur v
, comment obtenir son inverse, c'est-à-dire le dernier élément en premier?
La première chose qui me vient, c'est v[length(v):1]
, mais il renvoie NA v
numeric(0)
, alors que l'utilisateur s'attend normalement à ce que le tri rien ne retourne rien, le fait de ne pas trier rien renvoie la chose non disponible - Cela fait une grande différence dans mon cas.
1 réponses
Vous y êtes presque; rev
est-ce que vous avez besoin de:
rev(1:3)
# [1] 3 2 1
rev(numeric(0))
# numeric(0)
Voici pourquoi:
rev.default
# function (x)
# if (length(x)) x[length(x):1L] else x
# <bytecode: 0x0b5c6184>
# <environment: namespace:base>
Dans le cas de numeric(0)
,length(x)
renvoie 0. if
nécessite une condition logique, il plie length(x)
TRUE
ou FALSE
. Il arrive que as.logical(x)
FALSE
quand x
0 et TRUE
pour tout autre nombre.
ainsi,if (length(x))
teste précisément ce que vous voulez-si x
est de longueur zéro. Si elle n'est pas, length(x):1L
a un souhaitable il n'est pas nécessaire d'Inverser quoi que ce soit, comme @floder l'a expliqué dans le commentaire.