2016-03-21 16 views
3

I (nchar(test[i])==4) 4 karakter kullanılmasına test tüm öğelerini gereken bir karakter vektöraynı uzunlukta

test <- c('ab12','cd3','ef','gh03') 

düşünün bir karakter vektör tüm elemants olun. Eğer elemanın gerçek uzunluğu 4'ten az ise, kalan yerler sıfır ile doldurulmalıdır. Yani, sonuç Sorum this one benzer bu

> 'ab12','cd30','ef00','gh03' 

gibi görünmelidir. Yine de bir karakter vektörü ile çalışmam gerek.

cevap

5

base R işlevlerini, karakter sayısını eşit almak için bir dizenin sonundaki 0 ​​öğesine kullanabiliriz. vector arasında nchar (karakter sayısı) max olarak belirtilen width ile formatright varsayılan justify bu tarafından format olarak (sonuna gelindiğinde arka olan bir çıkış verir. Daha sonra, '0' gsub kullanarak her bir boşluk yerini alabilir. gsub desen tek boşluk (\\s) ve yedek 0 olduğunu.

gsub("\\s", "0", format(test, width=max(nchar(test)))) 
#[1] "ab12" "cd30" "ef00" "gh03" 

Ya da bir paket çözüm kullanıyorsanız, o zaman str_pad daha kolaylıkla da a sahip olarak bunu yapar pad belirtmek için rgument.

library(stringr) 
str_pad(test, max(nchar(test)), side="right", pad="0") 
+0

Çok teşekkürler! "\\" "bölümünü açıklar mısınız lütfen? – ikashnitsky

+1

@llya Bu, tek bir alan anlamına gelir. '? Regex' hakkında daha fazla bilgi edinebilirsiniz – akrun

İlgili konular