2015-01-29 4 views
0

Возможный дубликат: 12Получить числовые символы из буквенно-цифровой строки в R?

Я прочитал приведенные выше обсуждения.

Я хочу получить все числовые символы из буквенно-цифровой строки, используя R?

Мой код:

> y <- c() 
    > x <- c("wXYz04516", "XYz24060", "AB04512", "wCz04110", "wXYz04514", "wXYz04110") 
    > for (i in 1:length(x)){ 
    +  y <- c(as.numeric(gsub("[a-zA-Z]", "", x[i])),y) 
    + } 
    > print (y) 

[1] 4110 4514 4110 4512 24060 4516 

Здесь выводит все числовые чартеры, но не в состоянии получить стартовый номер ноль («0»)

The output omits starting Zero ("0") digit in case of 4110, 4514, 4110, 4512, and 4516. 

Как я могу получить цифру ноль включены до номера?

+1

Да, как работает @RichardScriven, я думаю, если вам нужен начальный ноль, вам нужно оставить их в качестве символов. – joran

+0

@RichardScriven и @ Joran спасибо ... Спасибо, что сообщили мне о ведущем ноле. – Issac

ответ

4

Ведущие нули не допускаются для целочисленных числовых значений. Поэтому, чтобы иметь ведущие нули, вам придется оставить их как персонажа. Однако вы можете распечатать их без кавычек, если хотите.

x <- c("wXYz04516", "XYz24060", "AB04512", "wCz04110", "wXYz04514") 

gsub("\\D+", "", x) 
# [1] "04516" "24060" "04512" "04110" "04514" 

as.numeric(gsub("\\D+", "", x)) 
# [1] 4516 24060 4512 4110 4514 

print(gsub("\\D+", "", x), quote = FALSE) 
# [1] 04516 24060 04512 04110 04514 

Так что последний один выглядит как числовой, но на самом деле характер.

Примечание стороны:gsub() и as.numeric() оба векторизованные функции, так что нет и никакой необходимости в for() цикла в этой операции.

+0

Этот последний ответ кажется довольно хорошим. – Issac

+0

Возможно, это то, что вы хотите. Но, как отмечено, вектор по-прежнему является символом –

0

Если вам нужны ведущие нули, вам нужно будет создать вектор символов вместо числового, поэтому измените as.numeric на as.character.

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