2013-09-26 6 views
2

Можно ли добавить или сохранить один или несколько ведущих нулей в число без преобразования результата в символ? Каждое решение, которое я нашел для добавления начальных нулей, возвращает строку символов, включая: paste, formatC, format и sprintf.Добавление или сохранение ведущих нулей без преобразования в формат символов

Например, может быть x0123 или 00123 и т.д., вместо того, чтобы 123 и все еще быть числовым?

x <-

EDIT

Это не важно. Я просто играл со следующим кодом, и последние две строки дали неверный ответ. Я просто подумал, может быть, если бы у меня были ведущие нули с числовым форматом, получение правильного ответа было бы проще.

a7 = c(1,1,1,0); b7=c(0,1,1,1); # 4 
a77 = '1110' ; b77='0111' ; # 4 
a777 = 1110  ; b777=0111 ; # 4 

length(b7[(b7 %in% intersect(a7,b7))]) 

R - count matches between characters of one string and another, no replacement

keyword <- unlist(strsplit(a77, '')) 
text <- unlist(strsplit(b77, '')) 
sum(!is.na(pmatch(keyword, text))) 

ab7 <- read.fwf(file = textConnection(as.character(rbind(a777, b777))), widths = c(1,1,1,1), colClasses = rep("character", 2)) 
length(ab7[2,][(ab7[2,] %in% intersect(ab7[1,],ab7[2,]))]) 
+0

В каком смысле это может измениться? Я имею в виду, * почему * он должен быть числовым и быть '0123'? –

ответ

6

Вы всегда можете создать свой собственный класс объектов, который имеет один слот для значения числа (но если он хранится как числовой, то то, что мы видим как 123, фактически будет храниться как двоичное значение, что-то вроде 01111011 (хотя, вероятно, с большим количеством ведущих 0)) и еще один слот или атрибут либо для числа ведущих 0, либо для числа значимых цифр. Затем вы можете написать методы для того, что делать с номером (и каким эффектом будет занимать ведущие 0, sig цифры и т. Д.).

Метод печати мог бы затем распечатать его с ведущими нулями, сохранив внутреннее значение в виде числа.

Но в большинстве случаев это кажется немного излишним (хотя я знаю, что в некоторых полях большое значение имеет количество значимых цифр, так что ведущие 0 могут быть важны). Может быть проще использовать преобразование в характерные методы, о которых вы уже знаете, но просто распечатывайте таким образом, чтобы он не выглядел явно как число, см. Функции cat и print для этих опций.

8

Вы не правильно думать о том, что такое "число" есть. Языки программирования хранят внутреннее представление, которое сохраняет полную точность до предела машины. Вы, видимо, обеспокоены тем, что печатается на экране или консоли. По определению эти числовые символы являются строковыми элементами, то есть пару байтов обрабатываются декодером ASCII (или эквивалентом), чтобы определить, что рисовать на экране. Что «x« есть », чтобы нарисовать счастливо на президентских показаниях, зависит от вашего определения того, что« есть »есть.

+0

(+1), хорошо сказано. –

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