我想替换一个看起来像这样的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&lt; -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 $ Depth)) name(y1992)&lt; -proj_names y1992 []&lt; - lapply(y1992, function(x){replace(x,x == 0,NA)})y1992&lt; -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 :(得分:0)
使用您熟悉的任何语言并生成此类数据的文本字符串。从19xx到20xx的循环开始60年,如果它只是想要替换的数字,那么代码只需要用循环迭代器中的值替换数字。 让我知道您可以编程的语言,我会尝试为您编写一些内容。所有你需要知道的是
如果您熟悉excel,也可以在Excel中执行此操作,然后将粘贴复制到文本文件中。
希望这有帮助。
答案 1 :(得分:0)
看来你的搜索和替换要求非常简单。您可以直接扫描文本并进行替换,不是吗?我误解了你的要求吗?
如果您想使用正则表达式,请搜索“y19”后跟两位数字,并将匹配项替换为“y1992”。例如。如果使用Java:
String input =“.... your string ..”; String output = input.replaceAll(“”y19 \ d {2}([^ \ d])“,”y1992 $ 1“);
注意字符串#replaceAll()是java.util.regex.Matcher#replaceAll()的快捷方式 如果您多次运行相同的正则表达式,首先创建“模式”,然后匹配将更有效。