Re: [問題] 型態轉換 文字轉數字 最大位數

作者: Edster (Edster)   2016-08-23 00:25:52
※ 引述《f496328mm (為什麼會流淚)》之銘言:
: y= c("195875715247033841" )
: as.numeric( y )
: # 195875715247033856
: 因為一些原因
: 會用到位數非常大的data
: 像上面y這樣 我想要把他轉成數字 做排序之類
: 就會轉失敗 沒有辦法完全文字轉數字
: 雖然R一樣會轉成一組數字 但不是我要的
: 因為我還會再把他轉回文字
: 這樣一來一往 資料就會改變
: 想問問看有沒有什麼解決方法
: options(digits=22)
: 我也有開到最大位數
: 可是依然不行
: 謝謝
library(magrittr)
library(bit64)
# library(forRest)
y1= c("195875715247033841")
y2= c("195875715247033842")
y3= c("195875715247033839")
y=c(y1,y2,y3)
substring(y, c(4,6,8,10,12), c(6,8,10,12,30))
t1 = Sys.time()
sortedData =lapply(y, function(x)substring(x, c(4,6,8,10,12),
c(6,8,10,12,30))) %>% do.call(rbind,.) %>% sortbyrowR(., decreasing=FALSE)
apply(sortedData,1,function(x) paste(x,collapse = ""))
t2=Sys.time()
t2-t1
Time difference of 0.012008905410766602 secs
t1=Sys.time()
as.integer64(y) %>% sort
t2=Sys.time()
t2-t1
Time difference of 0.006504058837890625 secs
sortbyrowR 是參照C版大的文章, http://pastebin.com/zE0bQT3U
作者: f496328mm (為什麼會流淚)   2016-08-23 00:30:00
謝謝 用as.integer64 就能完美轉換成功
作者: Edster (Edster)   2016-08-23 00:39:00
沒關係,總有機會用到。

Links booklink

Contact Us: admin [ a t ] ucptt.com