2016-06-22 2 views
0

私は以下のようなデータを持っています。colnamesを置き換えたいと思います。gsubを使ってどのように置き換えることができますか?

da 

    ..B1 ..B2 ..B3 
a  1  2 1 
b  1  1 1 

優先出力:

 B1 B2 B3 
a  1  2 1 
b  1  1 1 

と私は、このコマンドを使用しますが、それはうまくいきませんでした:

da=gsub(pattern = "..", replacement = "", x = colnames(da)) 

答えて

3

.は、任意の文字を表すメタ文字です。我々は

gsub("..", "", x= colnames(da)) 

を使用する場合、すべての文字が削除されるように、結果は

#[1] "" "" "" 

になります。私たちは、fixed = TRUEを使用するか、エスケープするか必要.

colnames(da) <- gsub("..", "", x= colnames(da), fixed=TRUE) 
colnames(da) 
#[1] "B1" "B2" "B3" 

gsub("\\.+", "", colnames(da)) 
#[1] "B1" "B2" "B3" 
+0

どうもありがとう、あなたの最後のコマンドは、良い作品ができますが。出力のように行の名前と値で列名を変更しましたか? – tob

+0

@tob名前をrownamesで変更したい場合、 'colnames(da)< - rownames(da)' – akrun

+0

@akrun大括弧gsub( "。 "、" "、x = colnames(da) –

1

としても機能するであろう次:これは名前のどの位置にある任意の期間を削除することをサイドノートでは

da<-data.frame(..B1=c(1,1), ..B2=c(2,1), ..B3=c(1,1)) 

colnames(da) <- gsub("[.]","", x=colnames(da)) 

。いくつかの状況では、あなたはそれを望んでいません。以下は、開始時にある二つの期間を削除します:

colnames(da) <- gsub("^..","", x=colnames(da)) 
1

機能[[:PUNCT:]]:句読点文字**を削除するために使用されます! "#$は%& '()* +、 - /:;。?< => @ [\]^_` {|} **

colnames(da) <- gsub("[[:punct:]]","",colnames(da)) 
> da 
     B1 B2 B3 
    1 1 2 1 
    2 1 1 1  
関連する問題