2016-04-22 3 views
0

私は、国家犯罪被害調査のデータを分析するためにRの調査パッケージを使用していました。 Thomas Lumleyの本複雑な調査:Rを使った分析のガイドと彼の調査パッケージのヘルプファイルには、このような複製重量の正規表現が使用されています。。しかし、この表現は、必ずしもすべての反復体重を特定するとは限りません。 +記号を?に変更すると?正規表現は正常に動作し、すべての反復ウェイトを識別します。短いテストケースを以下に示します。私は正規表現には自信がありません。これは正規表現の正しい変更ですか、それともパターンを書き込む信頼性の高い方法ですか?複雑な調査Rパッケージの反復重みの正規表現

x<-c("V3067", "V3068", "V3069", "V3070", "V3071", "V3072", "V3073", "V3074", "V3075", "V3076", "V3077", "V3078", 
"V3079", "V3080", "WGTPERCY", "V3081", "V3082", "PERREPWGT1", "PERREPWGT2", "PERREPWGT3", "PERREPWGT4", 
"PERREPWGT5", "PERREPWGT6", "PERREPWGT7", "PERREPWGT8", "PERREPWGT9", "PERREPWGT10", "PERREPWGT11", 
"PERREPWGT12", "PERREPWGT13", "PERREPWGT14", "PERREPWGT15", "PERREPWGT16", "PERREPWGT17", "PERREPWGT18", 
"PERREPWGT19", "PERREPWGT20", "PERREPWGT21", "PERREPWGT22", "PERREPWGT23", "PERREPWGT24", "PERREPWGT25", 
"PERREPWGT26", "PERREPWGT27", "PERREPWGT28", "PERREPWGT29", "PERREPWGT30", "PERREPWGT31", "PERREPWGT32", 
"PERREPWGT33", "PERREPWGT34", "PERREPWGT35", "PERREPWGT36", "PERREPWGT37", "PERREPWGT38", "PERREPWGT39", 
"PERREPWGT40", "PERREPWGT41", "PERREPWGT42", "PERREPWGT43", "PERREPWGT44", "PERREPWGT45", "PERREPWGT46", 
"PERREPWGT47", "PERREPWGT48", "PERREPWGT49", "PERREPWGT50", "PERREPWGT51", "PERREPWGT52", "PERREPWGT53", 
"PERREPWGT54", "PERREPWGT55", "PERREPWGT56", "PERREPWGT57", "PERREPWGT58", "PERREPWGT59", "PERREPWGT60", 
"PERREPWGT61", "PERREPWGT62", "PERREPWGT63", "PERREPWGT64", "PERREPWGT65", "PERREPWGT66", "PERREPWGT67", 
"PERREPWGT68", "PERREPWGT69", "PERREPWGT70", "PERREPWGT71", "PERREPWGT72", "PERREPWGT73", "PERREPWGT74", 
"PERREPWGT75", "PERREPWGT76", "PERREPWGT77", "PERREPWGT78", "PERREPWGT79", "PERREPWGT80", "PERREPWGT81", 
"PERREPWGT82", "PERREPWGT83", "PERREPWGT84", "PERREPWGT85", "PERREPWGT86", "PERREPWGT87", "PERREPWGT88", 
"PERREPWGT89", "PERREPWGT90", "PERREPWGT91", "PERREPWGT92", "PERREPWGT93", "PERREPWGT94", "PERREPWGT95", 
"PERREPWGT96", "PERREPWGT97", "PERREPWGT98", "PERREPWGT99", "PERREPWGT100", "PERREPWGT101", "PERREPWGT102", 
"PERREPWGT103", "PERREPWGT104", "PERREPWGT105", "PERREPWGT106", "PERREPWGT107", "PERREPWGT108", "PERREPWGT109", 
"PERREPWGT110", "PERREPWGT111", "PERREPWGT112", "PERREPWGT113", "PERREPWGT114", "PERREPWGT115", "PERREPWGT116", 
"PERREPWGT117", "PERREPWGT118", "PERREPWGT119", "PERREPWGT120", "PERREPWGT121", "PERREPWGT122", "PERREPWGT123", 
"PERREPWGT124", "PERREPWGT125", "PERREPWGT126", "PERREPWGT127", "PERREPWGT128", "PERREPWGT129", "PERREPWGT130", 
"PERREPWGT131", "PERREPWGT132", "PERREPWGT133", "PERREPWGT134", "PERREPWGT135", "PERREPWGT136", "PERREPWGT137", 
"PERREPWGT138", "PERREPWGT139", "PERREPWGT140", "PERREPWGT141", "PERREPWGT142", "PERREPWGT143", "PERREPWGT144", 
"PERREPWGT145", "PERREPWGT146", "PERREPWGT147", "PERREPWGT148", "PERREPWGT149", "PERREPWGT150", "PERREPWGT151", 
"PERREPWGT152", "PERREPWGT153", "PERREPWGT154", "PERREPWGT155", "PERREPWGT156", "PERREPWGT157", "PERREPWGT158", 
"PERREPWGT159", "PERREPWGT160") 


#Regular expression consistent with examples in survey package 
#Does NOT identify all replicate weight names 
grep("PERREPWGT[1-160]+", x) 

#Correctly identifies array index 18 through 177 
grep("PERREPWGT[1-160]?", x) 

答えて

0

[1-160]は実際には有用な正規表現パターンではありません。すべての1桁の数字を0〜9に一致させ、複数の数字を許可したいとします。これを行うには、grep("PERREPWGT[0-9]+" , x)