R: le découpage d'une chaîne numérique
Je suis en train de séparer une chaîne numérique de 40 chiffres (ie. le fractionnement 123456789123456789123456789
en 1 2 3 4
etc.)
Malheureusement strsplit
ne fonctionne pas comme il exige des personnages, et la conversion de la chaîne à l'aide de as.character
ne fonctionne pas comme il est très long et R automatiquement la coupure de décimales pour les longues chiffres (maximum est de 22 décimales). J'ai donc jusqu'à la fin avec "1.2345e+35"
comme une chaîne de caractères, au lieu des chiffres.
Est-il numérique variante de strsplit
, ou d'un travail autour de la virgule-coupe-hors de question? Je n'arrive pas à trouver la réponse sur stackoverflow, mais des excuses si cela a déjà été répondu avant. Merci à l'avance!
c'est numérique, c'est pourquoi
strsplit
donne une erreurmais si vous avez affaire à une très grande valeur numérique, R a probablement déjà perdu de la précision. La valeur max de
options("digits")
est de 22 ; je ne suis pas sûr de la précision maximale que R peut tenir dans un numeric
variable, mais je pense que votre valeur est plus grande que cela. Vous pouvez regarder une partie de ces réponses sur vos options de précision arbitraire (la plupart impliquant des interfaces non-R des outils tels que bc
): par exemple stackoverflow.com/questions/8175965/...Par exemple:
xc <- "123456789123456789123456789"; x <- as.numeric(xc); dump("x","")
s/probablement/certainement. R numérique de classe est double précision, qui ne reçoit que vous ~16 chiffres. Tout le reste est de l'erreur d'arrondi. Un exemple reproductible qui serait vraiment utile dans ce cas... OP: comment est-ce numéro en cours de création dans la R?
OriginalL'auteur user1092247 | 2012-06-03
Vous devez vous connecter pour publier un commentaire.
Si R est le calcul du nombre que je ne connais pas la solution. Si le nombre est dans un fichier de données, je pense que le code ci-dessous. Bien que, si le nombre est un fichier de données, il y a probablement beaucoup plus facile de trouver des solutions.
MODIFIER
Je me rends compte que je n'arrive pas à comprendre la question, et ma réponse est probablement assez ridicule. Néanmoins, si vous avez un ensemble de données complet de vraiment long numéros, vous pourriez diviser tous les d'eux avec le code ci-dessous. Notez qu'il n'y a pas de guillemets dans le fichier 'three_long_numbers.txt" et les données qu'au début les numériques:
OriginalL'auteur Mark Miller
Vous pouvez simplement faire cette option pour que le numérique comme vecteur:
ou si vous le souhaitez découpé en tant que caractère de vecteur:
OriginalL'auteur 989
Ici est une autre approche qui me semble la plus straight-forward que ma réponse d'il y a un an:
Diviser un seul vecteur:
Lire un fichier contenant les trois longs nombres de longueur égale:
Lire un fichier contenant les trois longs nombres de longueur inégale:
Voici le code pour diviser une colonne de numéros longs dans un fichier de données qui contient plusieurs colonnes. Dans cet exemple, chaque nombre de la colonne 2 a la même longueur:
OriginalL'auteur Mark Miller