2015-03-20 2 views
-1

Я назначаю значение ниже в R в переменную x, которое я прочитал из файла, и когда я его распечатаю, он показывает двойной формат. Я хочу иметь возможность хранить это длинное число без десятичного числа, потому что, когда я делаю запись REST, данные отправляются как двойные. Я пробовал as.character (x), но тогда при выполнении POST для REST API он рассматривается как строка. Есть ли способ сохранить это значение длинным, а не десятичным?Преобразование длинных значений в double в R

x <- 1426643216897 

print(x) 
[1] 1.426643e+12 

Thranks

+0

возможно дубликат [длинного/BigInt/десятичного эквивалентного типа данных в R] (http://stackoverflow.com/questions/2053397/long-bigint-decimal -equivalent-datatype-in-r) – Gregor

+0

Номинированный дубликат был написан до введения «полудоллых целых чисел», поэтому в настоящее время не лучший ответ t o ссылку. Я также думаю, что это больше связано со стороной ввода числового/целочисленного хранилища, и эта фокусируется на выходе. –

ответ

3

Я предложил бы использовать цитату = FALSE в функции print при работе с символами, которые вы делаете не хочу прилагаться. Поскольку print также принимает цифру аргумента вы можете пойти в любой стороне:

> print(as.character(x), quote=FALSE) 
[1] 1426643216897 
> print(x, digits=20) 
[1] 1426643216897 

Versus:

> print(as.character(x)) 
[1] "1426643216897" 

Там нет длинных целого режим R. Вы должны понимать, что цифры с более чем 9 базовыми 10 цифрами являются, которые «сохраняются как десятичные знаки», т.е. хранятся с абсциссой + мантисса, но кажущееся увеличение целочисленной длины достигается путем печати точного преобразования абсциссы «double» до base-10 без десятичной точки. Обратите внимание на то, что произойдет, если вы явно пытаетесь «магазин как целое»:

> x <- 1426643216897L 
Warning message: 
non-integer value 1426643216897L qualified with L; using numeric value 

Если вам необходимо сохранить номер с большей длиной, чем 53 двоичных цифр могут справиться, вам нужно будет идти с хранением символов, а затем использовать кавычки = FALSE параметр или использовать cat для вывода:

> cat("test") 
test 
+0

Привет @BondedDust, если бы я хотел применить x <- 1426643216897L к значению, которое я прочитал из файла , как бы я это сделал? – codeBarer

+0

Не уверен, что вы имеете в виду. Является ли '1426643216897L' содержимым файла или вы хотите прочитать в' x <- 1426643216897L' как R-код? Возможные полезные страницы справки для вариантов 1 или 2: '? Readlines' или'? Source'. –

+0

1426643216897 - это содержимое файла. Я хочу сделать что-то вроде актера, добавив L в конец. – codeBarer

0

Установите цифры вариант первой в вашей среде: R

options(digits=22)

+0

Даже когда вы устанавливаете цифры и пытаетесь записать значение в файл, оно записывает его как 1.4266e + 12, а не 1426643216897 – codeBarer

Смежные вопросы