2

私はこのベクトルを持っています:

traits <- c("resid.mean.EXT"   ,        "resid.q75.EXT"       ,     "resid.median.red"      ,   "resid.q75.red"    ,        "resid.median.yellow" ,    
            "resid.q75.yellow"  ,       "resid.mean.norm.EXT"   ,   "resid.q75.norm.EXT" ,      "resid.mean.norm.yellow"   ,"resid.median.norm.yellow",
            "resid.q75.norm.yellow"   , "resid.iqr.EXT"        ,    "resid.iqr.red"    ,        "resid.iqr.yellow"  ,       "resid.q90.EXT"   ,        
            "resid.q90.norm.red"  ,     "resid.q90.norm.yellow"   , "resid.var.EXT"     ,       "resid.q25.TOF"     ,       "resid.q25.norm.yellow" )  

ベクトルの特性には 20 の一意の文字列がありますが、特性には 4 つの一意のクラスがあります。

classes <- c("EXT", "red", "TOF", "yellow")

traitsクラスは、ベクトル内の各要素の最後の単語によって決定されます。

traits文字ベクトルを、そのクラスに基づいて 4 つのレベルを持つ要因にしたいと思います。

助けてくれてありがとう!

EDITいくつかの混乱があったようです。明確にするために、traits上記のように決定された、どのクラスに属しているかに対応する、4つのレベルを持つ因子ベクトルにしたいと思います。ありがとう

4

1 に答える 1

0

正規表現とsub関数を使用できます。たとえば、次のようになります。

## this will replace the whole string in traits with the content after the last dot
cl <- sub(".*\\.([A-Za-z]+)$", "\\1", x=traits)
factor(cl)
# [1] EXT    EXT    red    red    yellow yellow EXT    EXT    yellow yellow yellow EXT    red    yellow EXT    red    yellow EXT    TOF    yellow
# Levels: EXT red TOF yellow
于 2014-08-25T16:54:14.233 に答える