При подготовке функции, которая преобразует нормализованные числа с двойной точностью в десятичные числа, мне нужно что-то вроде следующего:
substr(01001011, 2, 5) # what is in fact:"0010" (because leading 0 is ignored)
substr(01001011, 2, 5) # what I want:"1001"
substr("01001011", 2, 5) # "1001"; gives what I want BUT the following:
В substr("01001011", 2, 5)
невозможно (для меня) превратить ее в функциютак как input=01001011
и двойные кавычки очень и очень проблематичны.Каждый раз, когда пользователь должен вручную вводить значение аргумента не в вызове функции, а также в теле функции, где расположена часть substr(...)
.
Проблема, вызванная тем, что 01001011
хранится как числовое значение, и поэтому все ведущие 0 игнорируются.
01001011 # [1] 1001011
class(01001011) # "numeric"
substrCorrectly <- function(x) {
substr("x", 2, 5) }
Например, для числа "01001011";
substrCorrectly <- function(x) {
substr("01001011", 2, 5) }
substrCorrectly(01001011) # "1001"
Эта функция определенно очень некрасива и противоречит понятию функции: каждый раз, когда пользователь должен изменить тело функции перед ее применением!
Есть идеи?
Дополнительные примеры:
substr(000101001011, 1, 4) # "1010"; but what I want is 0001 here.
substr(10001, 1, 2) # "10" and what I want (10) coincides since 1 is leading.