是否可以在数字上添加或保留一个或多个前导零而不将结果转换为字符?我发现的用于添加前导零的每个解决方案都会返回一个字符串,包括:paste
,formatC
,format
和sprintf
。
例如,x
可以是0123
还是00123
等,而不是123
仍然是数字吗?
x <- 0123
编辑
这不是必需的。我只是在玩下面的代码,最后两行给出了错误的答案。我只是想,如果我可以使用数字格式的前导零来获取正确的答案会更容易。
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,]))])
最佳答案
您总是可以创建自己的对象类,该对象类具有一个用于数字值的插槽(但是如果将其存储为数字,那么我们看到的123实际上将作为二进制值存储,例如01111011(尽管可能与更多的前导0')),以及另一个用于前导0的位数或有效数字位数的广告位或属性。然后,您可以编写处理数字的方法(以及对前导0,sig数字等产生的影响)。
然后,打印方法可以确保将前导零打印出来,同时将内部值保持为数字。
但这在大多数情况下似乎有些矫over过正(尽管我知道某些字段在指示有效数字的数量方面起了很大作用,因此前导0可能很重要)。使用转换为您已经知道的字符方法可能会更简单,但是只需以看起来不像数字的方式进行打印即可,有关选项,请参见cat
和print
函数。
关于r - 添加或保留前导零而不转换为字符格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19034348/