2013-09-26 68 views
2

是否可以將一個或多個前導零添加到數字而不將結果轉換爲字符?我發現添加前導零的每個解決方案都會返回一個字符串,其中包括:paste,formatC,formatsprintf添加或保留前導零而不轉換爲字符格式

例如,可以x012300123等,而不是123,仍然是數字?

x <-

編輯

它不是必需的。我只是玩弄下面的代碼,最後兩行給出了錯誤的答案。我只是想,也許如果我可以有數字格式的前導零獲得正確的答案會更容易。

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,簽名數字等有何影響)。

打印方法然後可以確保打印它與前導零,同時保持內部值爲一個數字。

但在大多數情況下,這似乎有點矯枉過正(儘管我知道有些字段對於指示有效數字的數量做了很多事情,所以前導0可能很重要)。使用轉換爲您已知的字符方法可能會更簡單,但只需以非常明顯的數字方式進行打印,請參閱選項的catprint函數。

8

你是不是正確思考什麼是 「數字」 的說法。編程語言存儲內部表示,保持機器極限的完全精度。您顯然關心打印到屏幕或控制檯的內容。根據定義,這些數字字符是字符串元素,也就是說,ASCII解碼器(或等價物)處理幾個字節以確定在屏幕上繪製什麼。什麼x「是」,愉快地畫總統證詞,取決於你對「是」的定義。

+0

(+1),說得好。 –

相關問題