2016-03-21 1 views
3

は文字ベクトル文字ベクトルのすべてelemants同じ長さ

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

を考えてみてください、私は4つの文字(nchar(test[i])==4)を含むようにtestのすべての要素を必要とします。要素の実際の長さが4未満の場合、残りの場所は0で埋められる必要があります。だから、結果は私の質問はthis oneに似ているこの

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

のようになります。しかし、私は文字ベクトルで作業する必要があります。

答えて

5

base R関数を使用して文字列の末尾に0を埋め込んで、文字数を等しくすることができます。 vectorncharmax(文字の数)として指定されたwidthformatは、それがrightにデフォルトjustifyformatとして(末尾にスペースを末尾で出力を提供します。その後、我々はgsubを使用して「0」との各スペースを置き換えることができます。 gsubのパターンが単一のスペース(\\s)で、交換が0です。

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

それとも我々はパッケージ・ソリューションを使用している場合は、その後、str_padは、より簡単に、それはまた、Aを持っているとしてこれを行い、指定してpadを指定します。

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

ありがとうございます! '' \\ s "'部分について説明してください。 – ikashnitsky

+1

@llya単一のスペースを意味します。 '?regex'からもっと詳しく読むことができます – akrun

関連する問題