2011-09-06 26 views
0

我想更換一個txt,可能是這個樣子:如何查找/替換一個範圍的話

y1991<-cbind(data.frame(Depth_m$X, Depth_m$Y, BotTemp$y1991_7_te, BotSal$y1991_7_sa, PSIsobarst$y1991_7_so, 
SurfSaline$y1991_7_so, SurfHeight$y1991_7_so, SurfTSST$y1991_7_so, Depth_m$Depth)) 
names(y1991)<-proj_names 
y1991[] <- lapply(y1991, function(x){replace(x, x == 0, NA)}) 
y1991<-na.omit(y1991) 

我有數據,六十多年,所以我想相同的代碼,只需用1992年,1993年,1994年等。與1991年更換,所以它看起來像這樣的例子,1992:

y1992 < -cbind(data.frame(Depth_m $ X,Depth_m $ Y,BotTemp $ y1992_7_te, BotSal $ y1992_7_sa,PSIsobarst $ y1992_7_so,SurfSaline $ y1992_7_so, SurfHeight $ y1992_7_so,SurfTSST $ y1992_7_so,Depth_m $深度)) 名稱(y1992)< -proj_names y1992 [] < - lapply(y1992, 函數(X){取代(X,X == 0,NA )})y1992 < -na.omit(y1992)

我一直在努力尋找互聯網回答,但迄今爲止我什麼也沒找到。希望你能幫助。 葉普

編輯: 我找到了解決辦法,但它只是給我打印輸出,而不是一個文件,我可以節省,但在這裏有雲:

X<-'y1991<-cbind(data.frame(Depth_m$X, Depth_m$Y, BotTemp$y1991_7_te, BotSal$y1991_7_sa, PSIsobarst$y1991_7_so, 
    SurfSaline$y1991_7_so, SurfHeight$y1991_7_so, SurfTSST$y1991_7_so, Depth_m$Depth)) 
    names(y1991)<-proj_names' 
for(xn in 1991:2010) { 
Y <- gsub("1991", xn, X) 
print(Y, quote=FALSE) 
} 
+0

您將不得不更加具體。您是否嘗試在代碼或文本文件中查找和替換文本? – NT3RP

回答

0

使用你在舒適的任何語言和生成這些數據的文本字符串。開始於一個從19xx到20xx的循環已經60年了,如果你想要替換它的數字,那麼代碼只需要用來自循環迭代器的值替換數字。 讓我知道你可以編程哪種語言,我會盡力爲你寫點東西。所有你需要知道的是

  1. 如何創建一個變量
  2. 如何使用任何條件循環例如用於循環
  3. 如何做串concatination和可怎麼轉換爲字符串
  4. 整數環
  5. 如何追加字符串輸出或文件

如果你熟悉擅長,也可以做到這一點在Excel中,然後在文本文件中複製粘貼。

希望這會有所幫助。

+0

感謝您的回覆。我可以在R中做一些編程,並且對Excel很熟悉,所以這兩者中的任何一個都適合我。 – Jeppe

+0

請注意,在尋找19XX的同時,確保它前面是「y」,後面跟着一個非數字可能很重要。 –

0

那麼看起來你的搜索和替換要求非常簡單。你可以簡單地瀏覽文本並進行替換,不是嗎?我誤解了你的要求嗎?

如果您希望使用正則表達式,請搜索「y19」後跟兩個數字,並將匹配替換爲「y1992」。例如。如果使用Java:

String input =「.... your string ..」; String output = input.replaceAll(「」y19 \ d {2}([^ \ d])「,」y1992 $ 1「);

注意String#replaceAll()是java.util.regex .Matcher#replaceAll() 如果您多次運行相同的正則表達式,首先創建「模式」,然後匹配將更有效率

+0

我完全不熟悉Java,但感謝您的回覆。 – Jeppe

+0

那麼正則表達式在其他語言中也應該是相似的。 –

+0

在替換文本「y1992 $ 1」中,「$ 1」表示正則表達式中第一個匹配的組合(即非數字)。在某些語言中,語法可能是\ 1而不是$ 1。 –